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. 编辑 <installation-directory>/conf/server.xml 文件(或 ...

  2. Confluence 6 PostgreSQL 输入你的数据库细节

    在 Confluence 的设置安装向导中,将会指导你 Confluence 如何连接到你的数据库.请确定选择 "My own database". 使用 JDBC 连接(默认) ...

  3. Confluence 6 PostgreSQL 设置准备

    请查看 Supported Platforms 页面来获得 Confluence 系统支持的 PostgreSQL 数据库版本.你需要在安装 Confluence 之前升级你的 PostgreSQL ...

  4. 移动端touchstart,touchmove,touchend

    近段时间使用html5开发一个公司内部应用,而触摸事件必然是移动应用中所必须的,刚开始以为移动设备上或许也会支持鼠标事件,原来是不支持的,好在webkit内核的移动浏览器支持touch事件,并且打包成 ...

  5. rpm命令用法小结

    rpm 是用来管理 Redhat系列的包管理工具: 通过将打包编译好的程序包文件放置在各自的位置上,就完成了安装: rpm   [OPTIONS]   PACHAGE_FILE 1 安装:: -i : ...

  6. LeetCode(72):编辑距离

    Hard! 题目描述: 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换 ...

  7. mysql中有多种存储引擎,每种引擎都有自己的特色

    mysql中有多种存储引擎,每种引擎都有自己的特色. 用途: MyISAM:快读, Memory:内存数据, InnoDB:完整的事务支持 锁: MyISAM:全表锁定, Memory:全表锁定, I ...

  8. laravel CSRF 保护

    在开始之前让我们来实现上述表单访问伪造的完整示例,为简单起见,我们在路由闭包中实现所有业务代码: Route::get('task/{id}/delete', function ($id) { ret ...

  9. react 中子组件调用父组件的方法

    1.在父组件中定义方法,并绑定在子组件上 // 在子组件中调用父组件中的方法 import React,{Component} from 'react'; import Child from './c ...

  10. Play框架--初学笔记

    目录结构 web_app 根目录 | sbt SBT Unix 批处理脚本用于启动sbt-launch.jar | sbt.bat SBT Windows 批处理脚本用于启动sbt-launch.ja ...