码迷,mamicode.com
首页 > 数据库 > 详细

关于nodejs+mongoDB的使用

时间:2018-01-11 11:26:20      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:连接   student   pre   model   post请求   res   ons   mod   ber   

nodejs的安装

mongodDB的安装(https://www.cnblogs.com/best/p/6212807.html#_lab2_0_0)

在mongoDB安装目录下 创建data文件夹,里面创建db、log文件夹
在mongoDB安装目录下 创建mongo.config文件
dbpath=F:\MongoDB\data\db
logpath=F:\MongoDB\data\log\mongo.log

 

npm install mongoose

使用淘宝 NPM 镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org

express
cnpm install express --save
cnpm install body-parser --save
cnpm install cookie-parser --save
cnpm install multer --save


控制台
mongod.exe -dbpath F:\MongoDB\data\db

启动 node express_demo.js服务

 

可视化工具 官网:https://robomongo.org/

 

服务端文件

  1 //express_demo.js 文件
  2 var express = require(‘express‘);
  3 var bodyParser = require(‘body-parser‘);
  4 var app = express();
  5 
  6 app.all(‘*‘, function(req, res, next) {
  7     // TODO 支持跨域访问
  8     res.setHeader("Access-Control-Allow-Origin", "*");
  9     res.setHeader("Access-Control-Allow-Credentials", "true");
 10     res.setHeader("Access-Control-Allow-Methods", "*");
 11     res.setHeader("Access-Control-Allow-Headers", "Content-Type,Access-Token");
 12     res.setHeader("Access-Control-Expose-Headers", "*");
 13     next();
 14 });
 15 
 16 //用bodyParser插件来获取post请求的参数
 17 app.use(bodyParser.json());
 18 app.use(bodyParser.urlencoded({ extended: false }));
 19 
 20 var mongoose = require("mongoose");
 21 mongoose.Promise = global.Promise;
 22 // mongoose.set("debug",true);
 23 mongoose.connect(‘mongodb://localhost:27017/myDB‘, { useMongoClient: true });
 24 var db = mongoose.connection;
 25 db.on("error", function(error) {
 26     console.log("数据库连接失败:" + error);
 27 });
 28 
 29 db.on("open", function() {
 30     console.log("数据库连接成功");
 31 });
 32 
 33 //分开的一种写法,实例用的是简写
 34 // var Schema = mongoose.Schema;
 35 // /*定义模式Student_Schema*/
 36 // var Student_Schema = new Schema({
 37 //   name: String,
 38 //   id: Number,
 39 //   phone: String,
 40 //   date: Date
 41 // }, {
 42 //   versionKey: false
 43 // });
 44 // /*定义模型Student,注意数据库存的是students*/
 45 // mongoose.model("Student", Student_Schema);
 46 var MyPerson = mongoose.model(‘persons‘, {
 47     name: String,
 48     phone: Number
 49 });
 50 
 51 app.post(‘/add-person‘, function(req, res) {
 52     var params = req.body;
 53     if (!params.name || !params.phone) {
 54         res.send({ ok: 1, msg: ‘参数错误‘ });
 55         return false;
 56     }
 57     var person = new MyPerson({
 58         name: params.name,
 59         phone: params.phone
 60     });
 61     person.save(function(err) {
 62         if (err) {
 63             console.log(err);
 64         } else {
 65             res.send({ ok: 0, msg: ‘新增成功‘ });
 66         }
 67     });
 68 })
 69 
 70 app.get(‘/concat‘, function(req, res) {
 71     res.send({
 72         ok: 0,
 73         msg: ‘获取成功‘,
 74         data: {
 75             total: 1,
 76             rows: [{
 77                 name: "aa",
 78                 email: "bb",
 79                 company: "cc",
 80                 city: "dd"
 81             }]
 82         }
 83     })
 84 })
 85 
 86 app.get(‘/list‘, function(req, res) {
 87     // console.log(req);
 88     // res.setHeader("Access-Control-Allow-Origin", "*");
 89     var params = req.query;
 90     var conditions = {};
 91     var regExp = new RegExp(params.name, "gi");
 92     if (params.name) {
 93         conditions = { ‘name‘: regExp };
 94     }
 95     MyPerson.count(conditions, function(err, num) {
 96         MyPerson.find(conditions, null, { skip: parseInt((params.page - 1) * params.per_page), limit: parseInt(params.per_page), sort: { "name": 1 } }, function(err, docs) {
 97             if (err) {
 98                 console.error(err);
 99             } else {
100                 res.send({
101                     ok: 0,
102                     msg: ‘获取成功‘,
103                     data: {
104                         total: num,
105                         rows: docs
106                     }
107                 })
108             }
109         });
110     });
111 })
112 
113 app.post(‘/update-person‘, function(req, res) {
114     var params = req.body;
115     if (!params.name || !params.phone) {
116         res.send({ ok: 1, msg: ‘参数错误‘ });
117         return false;
118     }
119     var conditions = { _id: params._id };
120     var updates = { $set: { name: params.name, phone: params.phone } };
121     MyPerson.update(conditions, updates, function(error) {
122         if (error) {
123             console.error(error);
124         } else {
125             res.send({ ok: 0, msg: ‘修改成功‘ });
126         }
127     });
128 })
129 
130 app.post(‘/del-person‘, function(req, res) {
131     var params = req.body;
132     // console.log(params);
133     MyPerson.remove({ _id: params._id }, function(err) {
134         if (err) {
135             console.error(err);
136         } else {
137             res.send({ ok: 0, msg: ‘删除成功‘ });
138         }
139     });
140 })
141 
142 var server = app.listen(8081, function() {
143 
144     var host = server.address().address
145     var port = server.address().port
146     console.log("应用实例,访问地址为 http://%s:%s", host, port)
147 
148 })

注意点:

技术分享图片是对跨域的处理。

技术分享图片用post请求的时候,参数的获取需要加技术分享图片插件,然后通过技术分享图片拿到参数。

 

技术分享图片

skip是(过滤掉前面几个)即从哪个位置开始,limit是限制几个, sort是排序。

 

关于nodejs+mongoDB的使用

标签:连接   student   pre   model   post请求   res   ons   mod   ber   

原文地址:https://www.cnblogs.com/xiaohuai/p/8266812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!