Node.js+mongoDB使用指南
沉沙 2018-09-20 来源 : 阅读 582 评论 0

摘要:本篇教程介绍了Node.js+mongoDB使用指南,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

本篇教程介绍了Node.js+mongoDB使用指南,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

<

nodejs的安装
mongodDB的安装(https://www.cnblogs.com/best/p/6212807.html#_lab2_0_0)
在mongoDB安装目录下 创建data文件夹,里面创建db、log文件夹在mongoDB安装目录下  创建mongo.config文件dbpath=F:\MongoDB\data\dblogpath=F:\MongoDB\data\log\mongo.log
 
npm install mongoose
使用淘宝 NPM 镜像npm install -g cnpm --registry=https://registry.npm.taobao.org
expresscnpm install express --savecnpm install body-parser --savecnpm install cookie-parser --savecnpm 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("应用实例,访问地址为 //%s:%s", host, port)
147 
148 })

注意点:
是对跨域的处理。
用post请求的时候,参数的获取需要加插件,然后通过拿到参数。
 

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

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注WEB前端Node.js频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程