一、安装MongoDB
下载mongoDB https://www.mongodb.com/download-center?jmp=nav#atlas
安装完成后,配置环境变量 PATH 中加入“C:\Program Files\MongoDB 2.6 Standard\bin“ //按你安装的路径更改
找个地方创建两个文件夹,例如:C:\M_DB、C:\M_LOG 分别存放数据库文件和日志文件
打开目录“C:\Program Files\MongoDB 2.6 Standard\bin”,并在此目录下新建一个mongo.config文件,文件内容如
##数据库目录 dbpath=C:\M_DB ##日志输出文件 logpath=C:\M_LOG\mongodb.log
以管理员方式打开CMD窗口,运行如下命令安装MongoDB服务 1
mongod --config "C:\Program Files\MongoDB 2.6 Standard\bin\mongo.config" --install
net start mongodb
mongo
以管理员方式打开CMD窗口,运行如下命令安装MongoDB服务 2
cd C:\Program Files\MongoDB 2.6 Standard\bin
mongod.exe --dbpath "C:\M_DB" --logpath "C:\M_LOG\mongodb.log"
二、Node.js 配合 Mongoose 【建立多个连接】
npm install mongoose --save
1、根目录下创建 mongoose 文件夹 ,文件夹下建立连接文件 db.js
/** * Created by cunkuan on 2017/10/13. */ var mongoose = require('mongoose'), DB_URL1 = 'mongodb://127.0.0.1:27017/node-db', DB_URL2 = 'mongodb://192.168.0.24:27017/other-db' /** * nodeMobile库连接 可建立多个连接库 */ mongoose.Promise = global.Promise; var nodeDB = mongoose.createConnection(DB_URL1,{ useMongoClient: true }); var otherDB = mongoose.createConnection(DB_URL2,{ useMongoClient: true }); /** * 连接成功 */ mongoose.connection.on('connected', function () { console.log('Mongoose connection open to ' + DB_URL); }); /** * 连接异常 */ mongoose.connection.on('error',function (err) { console.log('Mongoose connection error: ' + err); }); /** * 连接断开 */ mongoose.connection.on('disconnected', function () { console.log('Mongoose connection disconnected'); }); exports.nodeDB = nodeDB; exports.otherDB = otherDB;
2、根目录下创建 schema 文件夹 例如:创建奖品表 schema 文件夹下 创建奖品表(lucydrawSchema.js 数据模型)
/** * 奖品信息 */ var mongoose = require('mongoose'); var Schema = mongoose.Schema; var db = require('../mongoose/db'); //奖品 var drawList = new Schema({ drawName: {type: String},//名称 drawGrade: {type: Number},//奖品等级 drawCount: {type: Number},//奖品数量 drawProbability: {type: Number},//奖品概率 }); //活动 var LucyDraw = new Schema({ name: {type: String}, startTime: {type: Date, default: Date.now}, endTime: {type: Date, default: Date.now}, desc:{type: String}, countType:{type: String}, count:{type: Number}, effect:{type: Boolean}, drawList: [drawList], }); module.exports = db.nodeDB.model('LucyDraw', LucyDraw);
3、routes 文件夹下,创建路由文件 lucydrawRoutes.js (passport 是 用于权限验证的)
var passport = require('passport'); var LucyDraw = require("../schema/lucydrawSchema"); exports.pcRouter = function (router) { /** * 新建抽奖 */ router.post('/addlucydraw', passport.authenticate('bearerPC', {session: false}), function (req, res, next) { var data = req.body; var lucyDrawObj = new LucyDraw(data); lucyDrawObj.save(function (err, result) { if (err) { res.json({ code: '500', msg: "Error:" + err }); } else { res.json({ code: '0', result: result }); } }) }); /** * 抽奖列表 */ router.get('/lucydrawlist', passport.authenticate('bearerPC', {session: false}), function (req, res, next) { var page = req.query.page || 0; var size = req.query.size || 10; var query = LucyDraw.find({}); query.limit(parseInt(page)); query.skip(parseInt(page) * parseInt(size)); query.sort({createTime: 1}); query.exec(function (err, result) { if (err) { res.json({ code: '500', msg: "Error: 服务器错误" }); } else { res.json({ code: '0', result: result }); } }); }); /** * 抽奖查询 */ router.get('/lucydraw', passport.authenticate('bearerPC', {session: false}), function (req, res, next) { var id = req.query.id; LucyDraw.findOne({_id:id},function (err,result) { if (err) { res.json({ code: '500', msg: "Error: 服务器错误" }); } else { res.json({ code: '0', result: result }); } }); }); /** * 抽奖编辑 */ router.put('/lucydraw', passport.authenticate('bearerPC', {session: false}), function (req, res, next) { var id = req.query.id; var data = req.body; LucyDraw.update({_id:id},data,function (err,result) { if (err) { res.json({ code: '500', msg: "Error: 服务器错误" }); } else { res.json({ code: '0', result: result }); } }); }); /** * 抽奖上下架 */ router.put('/lucydraw_effect', passport.authenticate('bearerPC', {session: false}), function (req, res, next) { var id = req.query.id; var effect = req.query.effect; LucyDraw.update({_id:id},{effect:effect},function (err,result) { if (err) { res.json({ code: '500', msg: "Error: 服务器错误" }); } else { res.json({ code: '0', result: result }); } }); }); };
4、app.js 添加代码
var lucydrawRoutes= require('./routes/lucydrawRoutes'); .... .... .... app.use('/api/lucydraw',lucydrawRoutes);