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

  1、安装

  1. npm install mongoose -D

  2、引入mongoose && 基本配置

db.js

  1. const mongoose = require('mongoose');
  2.  
  3. mongoose.Promise = global.Promise;
  4. let DB_URL = '';
  5. const env = process.env.NODE_ENV;
  6.  
  7. if(Object.is(env, 'development')){//开发环境
  8. DB_URL = 'mongodb://localhost:27017/website-dev';
  9. }else if(Object.is(env, 'production')){//生产环境
  10. DB_URL = 'mongodb://localhost:27017/website-pro';
  11. }else {
  12. DB_URL = 'mongodb://localhost:27017/website-dev';
  13. }
  14.  
  15. //连接数据库
  16. mongoose.connect(DB_URL, { useNewUrlParser: true, useCreateIndex: true });
  17. const db = mongoose.connection;
  18. db.once('error', () => console.warn(`连接数据库==》${DB_URL} 失败!!!`));
  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. const mongoose = require('mongoose');
  2. const Schema = mongoose.Schema;
  3.  
  4. let userList = new Schema({
  5. username: {
  6. type: String,
  7. required: true,
  8. unique: true //用户名唯一
  9. },
  10. password: {
  11. type: String,
  12. required: true
  13. }
  14. });
  15.  
  16. let models = mongoose.model('users', userList);
  17.  
  18. module.exports = models;

  4、操作数据库

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

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

数据库表结构:

  

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

  

mongoose之操作mongoDB数据库的更多相关文章

  1. nodeJS中使用mongoose模块操作mongodb数据库

    在实际运用中,对于数据库的操作我们不可能一直在cmd命令行中进行操作,一般情况下需要在node环境中来操作mongodb数据库,这时就需要引入mongoose模块来对数据库进行增删改查等操作. 首先, ...

  2. Node.js使用Mongoose包操作MongoDB数据库

    1. 安装Mongoose npm install mongoose 2. 使用 2.1 创建连接 var mongoose = require('mongoose'); mongoose.conne ...

  3. NodeJs连接操作MongoDB数据库

    NodeJs连接操作MongoDB数据库 一,介绍 MongoDB是一种文档导向数据库管理系统,由C++撰写而成.介绍如何使用 Node.js 来连接 MongoDB,并对数据库进行操作. Mongo ...

  4. 不使用spring的情况下原生java代码两种方式操作mongodb数据库

    由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...

  5. 不使用spring的情况下用java原生代码操作mongodb数据库的两种方式

    由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...

  6. C# Asp.net中简单操作MongoDB数据库(二)

    C# Asp.net中简单操作MongoDB数据库(一)    , mongodb数据库连接可以回顾上面的篇幅. 1.model类: public class BaseEntity { /// < ...

  7. C# Asp.net中简单操作MongoDB数据库(一)

    需要引用MongoDB.Driver.dll.MongoDB.Driver.core.dll.MongoDB.Bson.dll三个dll. 1.数据库连接: public class MongoDb ...

  8. PHP操作MongoDB 数据库

    最近有个项目,需要用php操作mongoDb数据,整理如下 1,连接MongoDB数据库 $conn = new Mongo(); 其他链接方式 //$conn=new Mongo(); #连接本地主 ...

  9. python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战

    python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...

随机推荐

  1. Android UiAutomator 快速调试

    背景:在Eclipse中不能直接运行Uiautomator工程,所以每次编写一份用例都要进行手动输入命令,很烦.调试起来不仅繁琐还浪费时间.网上找到一份快速调试的代码UiAutomatorHelper ...

  2. spark submit参数及调优

    park submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数.   使用格式:  ./bin/spark-submit \   ...

  3. kali linux 更新问题

    1.使用一次更新和升级软件替换 apt-get install && apt -y full -upgrade 之后使用 reboot重启    系统,重启之后 再次使用命令   ap ...

  4. Spring Boot配置大全

    Spring Boot项目使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到 ...

  5. Android Studio启动时出现unable to access android sdk add-on list

    目录 Android Studio First Run 检测 Android SDK 及更新,由于众所周知的原因,我们会「Unable to access Android SDK add-on lis ...

  6. gradle编译命令 & 自动打包等

    ./gradlew -v 版本号,首次运行,没有gradle的要下载的哦. ./gradlew clean 删除HelloWord/app目录下的build文件夹 ./gradlew build 检查 ...

  7. 深入理解javascript原型和闭包——从【自由变量】到【作用域链】

    一直对闭包和变量作用域链模糊不清!!!有时都怀疑自己是不是脑袋秀逗啦还是范萌!! 先解释一下什么是“自由变量”. 在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用 ...

  8. 基于Redis的分布式锁到底安全吗

    http://zhangtielei.com/posts/blog-redlock-reasoning.html

  9. es6 Map,Set 和 WeakMap,WeakSet

    这些是新加的集合类型,提供了更加方便的获取属性值的方法,不用像以前一样用hasOwnProperty来检查某个属性是属于原型链上的呢还是当前对象的.同时,在进行属性值添加与获取时有专门的get,set ...

  10. 【Android】ImageView ScaleType属性值

    ImageView.ScaleType / android:scaleType值的意义区别: CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的 ...