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

  1、安装

npm install mongoose -D

  2、引入mongoose && 基本配置

db.js

 const mongoose = require('mongoose');

 mongoose.Promise = global.Promise;
let DB_URL = '';
const env = process.env.NODE_ENV; if(Object.is(env, 'development')){//开发环境
DB_URL = 'mongodb://localhost:27017/website-dev';
}else if(Object.is(env, 'production')){//生产环境
DB_URL = 'mongodb://localhost:27017/website-pro';
}else {
DB_URL = 'mongodb://localhost:27017/website-dev';
} //连接数据库
mongoose.connect(DB_URL, { useNewUrlParser: true, useCreateIndex: true });
const db = mongoose.connection;
db.once('error', () => console.warn(`连接数据库==》${DB_URL} 失败!!!`));
db.once('open', () => console.log(`连接数据库==》${DB_URL} 成功!`));

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

app.js

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

  项目启动结果:

  3、创建Schema

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

  如下实例初始化一个Schema:

 const mongoose = require('mongoose');
const Schema = mongoose.Schema; let userList = new Schema({
username: {
type: String,
required: true,
unique: true //用户名唯一
},
password: {
type: String,
required: true
}
}); let models = mongoose.model('users', userList); module.exports = models;

  4、操作数据库

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

 const express = require('express');
const router = express.Router();
const model = require('../model/user'); /* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
}); router.post('/login', (req, res, next) => {
model.find({username: 'admin', password: '123'}).then(user => {
let data = {
msg: '登录成功',
code: 0,
content: ''
};
if(user){
data.token = user[0]._id;
}else{
data.code = 2;
data.msg = '登录失败';
data.content = '账号或密码错误';
}
res.send(data);
})
}); router.post('/userRegister', (req, res, next) => {
let data = {
msg: '注册成功',
code: 0,
content: ''
};
let list = new model(req.body);
list.save((err, list) => {
if(err) {
data.code = 1;
data.msg = '注册失败';
}
res.send(data);
}) }); 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. LeetCode(113):路径总和 II

    Medium! 题目描述: 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例:给定如下二叉树,以及目标和 sum = ...

  2. 【深度学习】吴恩达网易公开课练习(class1 week2)

    知识点汇总 作业内容:用logistic回归对猫进行分类 numpy知识点: 查看矩阵维度: x.shape 初始化0矩阵: np.zeros((dim1, dim2)) 去掉矩阵中大小是1的维度: ...

  3. 部署描述符 web.xml

    google的部署描述符详解: https://cloud.google.com/appengine/docs/flexible/java/configuring-the-web-xml-deploy ...

  4. eclipse php pdt插件安装

    安装动态语言工具包: help->new install software->work with 框输入 http://download.eclipse.org/technology/dl ...

  5. 4.8cf自训

    发现cf以前的好题真的很多.. cf 730j 01背包变形 感觉很好的题 /* 先处理出最少需要t个瓶子 dp[i][j][k]前i个取k个,容量为j时的水的体积 滚动数组搞一下 本题的状态转移必须 ...

  6. (转)webpack和webpack-simple区别(如何引入css文件)

    博主最近研究vue+webpack的时候想引入css文件死活引入不出来,在webpack-simple那里却能引得出来,十分的纳闷,然后细心的调试了一下,原来这webpack和webpack-simp ...

  7. 阿里云使用js 实现OSS图片上传、获取OSS图片列表、获取图片外网访问地址(读写权限私有、读写权限公共);

    详情请参考:https://help.aliyun.com/document_detail/32069.html?spm=a2c4g.11186623.6.763.ZgC59a 或者https://h ...

  8. 步步为营-78-新闻展示(Ajax+Json+easyUI)

    Json:JavaScript Object Notation 1.1 Json对象的接收处理 <!DOCTYPE html> <html xmlns="http://ww ...

  9. HDU 3294 Girls' research(manachar模板题)

    Girls' researchTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...

  10. GAN-生成手写数字-Keras

    from keras.models import Sequential from keras.layers import Dense from keras.layers import Reshape ...