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. Confluence 6 配置一个 Confluence 环境

    本部分对你 Confluence 的外部设置进行描述.包括有如何配置 Web 服务器,应用服务器,目录和文件等信息—— Confluence 运行所需要的所有环境.有关在服务器内部对配置进行修改的内容 ...

  2. package.json包描述文件说明

    //commonjs包规范-说明 { "name": "leyi",//包名,不允许空格 "description": "hell ...

  3. PHP 方法,类与对象的相关函数学习

    1.function_exists function_exists(string)检测函数是否存在,string表示需要检测的函数名称(注意与property_exists,method_exists ...

  4. Allegro PCB Design GXL (legacy) 由零散的对象构成一个Shape

    Allegro PCB Design GXL (legacy) version 16.6-2015 从DXF文件中导入板框之后,发现板框是由Line Segment.Arc Segment等对象组成, ...

  5. mysql常见安全加固策略

    原创 2017年01月17日 21:36:50 标签: 数据库 / mysql / 安全加固 5760 常见Mysql配置文件:linux系统下是my.conf,windows环境下是my.ini: ...

  6. VUE失去焦点提交修改值

    xxx.vue <input class="ml6 w85 bdr-6 bd-none text-center" type="text" v-model= ...

  7. 让simplejson支持datetime类型的序列化

    simplejson是Python的一个json包,但是觉得有点不爽,就是不能序列化datetime,稍作修改就可以了: 原文:http://blog.csdn.net/hong201/article ...

  8. CallContext

    1.线程本地存储区的专用集合对象,并提供对每个逻辑执行线程都唯一的数据槽.2.数据槽不在其他逻辑线程上的调用上下文之间共享. class Program { static Jason_TestEnti ...

  9. [转] 合理使用npm version与npm dist-tag详解

    第一步:发布第一个稳定版本 npm publish//1.0.0 第二步:修改文件继续发布第二个版本 git add -A && git commit -m "c" ...

  10. Typescript知识梳理

    概述 TypeScript简称TS,具有类型系统,且是JavaScript的超集. 它可以编译成普通的JavaScript代码.TypeScript支持任意浏览器,任意环境,任意系统并且是开源的.通过 ...