经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MongoDB » 查看文章
mongoose之操作mongoDB数据库
来源:cnblogs  作者:Gerryli  时间:2019/3/12 8:50:37  对本文有异议

  mongoose是node.js操作mongoDB数据库的一种工具,借助于mongoose,我们可以便捷的完成一些数据库的基本操作,基本使用如下:

  1、安装

  1. npm install mongoose -D

  2、引入mongoose && 基本配置 

db.js

  1. 1 const mongoose = require('mongoose');
  2. 2
  3. 3 mongoose.Promise = global.Promise;
  4. 4 let DB_URL = '';
  5. 5 const env = process.env.NODE_ENV;
  6. 6
  7. 7 if(Object.is(env, 'development')){//开发环境
  8. 8 DB_URL = 'mongodb://localhost:27017/website-dev';
  9. 9 }else if(Object.is(env, 'production')){//生产环境
  10. 10 DB_URL = 'mongodb://localhost:27017/website-pro';
  11. 11 }else {
  12. 12 DB_URL = 'mongodb://localhost:27017/website-dev';
  13. 13 }
  14. 14
  15. 15 //连接数据库
  16. 16 mongoose.connect(DB_URL, { useNewUrlParser: true, useCreateIndex: true });
  17. 17 const db = mongoose.connection;
  18. 18 db.once('error', () => console.warn(`连接数据库==》${DB_URL} 失败!!!`));
  19. 19 db.once('open', () => console.log(`连接数据库==》${DB_URL} 成功!`));

  在用express开发时,要在app.js中引入该文件,当程序启动后,会自动执行此段代码

app.js

  1. const db = require('./db');

  项目启动结果:

  3、创建Schema

  Mongoose 的一切始于 Schema。每个 schema 都会映射到一个 MongoDB collection ,并定义这个collection里的文档的构成。我们常用的Oracle、mysql属于关系型数据库,对于MongoDB这种NoSql数据库,一个collection对应的是关系型数据库中的一个表。

  如下实例初始化一个Schema:

  1. 1 const mongoose = require('mongoose');
  2. 2 const Schema = mongoose.Schema;
  3. 3
  4. 4 let userList = new Schema({
  5. 5 username: {
  6. 6 type: String,
  7. 7 required: true,
  8. 8 unique: true //用户名唯一
  9. 9 },
  10. 10 password: {
  11. 11 type: String,
  12. 12 required: true
  13. 13 }
  14. 14 });
  15. 15
  16. 16 let models = mongoose.model('users', userList);
  17. 17
  18. 18 module.exports = models;

  4、操作数据库

  如果我们想完成一些CRUD操作,就需要借助Schema的实例models;Models是从 Schema 编译来的构造函数。 它们的实例就代表着可以从数据库保存和读取的 documents。 从数据库创建和读取 document 的所有操作都是通过 model 进行的。

  1. 1 const express = require('express');
  2. 2 const router = express.Router();
  3. 3 const model = require('../model/user');
  4. 4
  5. 5 /* GET users listing. */
  6. 6 router.get('/', function(req, res, next) {
  7. 7 res.send('respond with a resource');
  8. 8 });
  9. 9
  10. 10 router.post('/login', (req, res, next) => {
  11. 11 model.find({username: 'admin', password: '123'}).then(user => {
  12. 12 let data = {
  13. 13 msg: '登录成功',
  14. 14 code: 0,
  15. 15 content: ''
  16. 16 };
  17. 17 if(user){
  18. 18 data.token = user[0]._id;
  19. 19 }else{
  20. 20 data.code = 2;
  21. 21 data.msg = '登录失败';
  22. 22 data.content = '账号或密码错误';
  23. 23 }
  24. 24 res.send(data);
  25. 25 })
  26. 26 });
  27. 27
  28. 28 router.post('/userRegister', (req, res, next) => {
  29. 29 let data = {
  30. 30 msg: '注册成功',
  31. 31 code: 0,
  32. 32 content: ''
  33. 33 };
  34. 34 let list = new model(req.body);
  35. 35 list.save((err, list) => {
  36. 36 if(err) {
  37. 37 data.code = 1;
  38. 38 data.msg = '注册失败';
  39. 39 }
  40. 40 res.send(data);
  41. 41 })
  42. 42
  43. 43 });
  44. 44
  45. 45
  46. 46 module.exports = router;

 数据库表结构:

  

  以上只是简单使用,更多详情请参考官方文档:https://cn.mongoosedoc.top/docs/index.html

   

 

原文链接:http://www.cnblogs.com/gerry2019/p/10461009.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号