nodejs通过命令指定产品环境

要实现这个功能,首先需要一个能解释命令行的工具,这里使用的是yargs插件API地址https://github.com/chevex/yargs。通过指令node server.js –P pro 来指定环境。

在config.js文件中编写如下内容:

var argv = require('yargs').argv;
//这里就可以使用argv读取命令行中的参数了
exports.database = {
    sock: argv['sock'] || false,
    type: 'redis',
    host: redis_conf.split(':')[0] || '127.0.0.1',
    port: redis_conf.split(':')[1] || 6379,
    profile: argv['P'] || 'dev'
};

在redis.js文件中,创建db对象,链接redis。

var conf = require('../../config.js').database;

var redis = require("redis"),
redisClient = null; 

require('node-redis-streamify')(redis);

var db = function(callback) {
	if (conf.sock) {
		console.log('Opening redis connection to socket ' + conf.host);
		redisClient = redis.createClient(conf.host);
	} else {
		console.log('Opening redis connection to ' + conf.host + ':' + conf.port);
		redisClient = redis.createClient(conf.port, conf.host, {});
	}
	/* 
	 * 通过命令行中的参数来指定数据库
	 * 如果是pro 那么使用db1 作为数据库
	 * 如果是dev 那么使用db0 作为数据库
	 */
	if(conf.profile == 'pro'){
		redisClient.select(1, function(err, res){
			console.log('I am a pro db.')
		});
	}else{
		redisClient.select(0, function(err, res){
			console.log('I am a dev db.');
		})
	}

	redisClient.on("connect", function (err) {
		callback();
	});

    redisClient.on("error", function (err) {
        console.log("Redis error: " + err);
    });

};
db.prototype = {
    setRoomSetting: function (room, member) {
        redisClient.hset("member", room, JSON.stringify(member));
    },
    getFriendlyLinks: function (callback) {
        redisClient.hgetall('links', function (error, res) {
            if (error) {
                return;
            }
            console.log('getFriendlyLinks db response:' + res);
            if (res) {
                callback(res);
            }
        });
    }
}

配置一个用于创建db对象的配置文件data.js

var conf = require('../config.js').database;
console.log(conf.type)
//这样可以根据配置来切换数据库
exports.db = require('./data/'+conf.type+'.js').db;
//也可以直接使用数据库
exports.mongodb = require('./data/mongodb.js').db;

最后在server.js中使用db

var data = require('./lib/data.js').db;
var db = new data(function(){
});
//这时候db对象已经创建完毕
//可以在其他地方使用db来调用它的prototype方法,完成数据操作
db.getFriendlyLinks(function(res){
    console.dir(res);
});

转载于:https://my.oschina.net/u/1176977/blog/672975

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值