mongoose之操作mongoDB数据库
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数据库的更多相关文章
- nodeJS中使用mongoose模块操作mongodb数据库
在实际运用中,对于数据库的操作我们不可能一直在cmd命令行中进行操作,一般情况下需要在node环境中来操作mongodb数据库,这时就需要引入mongoose模块来对数据库进行增删改查等操作. 首先, ...
- Node.js使用Mongoose包操作MongoDB数据库
1. 安装Mongoose npm install mongoose 2. 使用 2.1 创建连接 var mongoose = require('mongoose'); mongoose.conne ...
- NodeJs连接操作MongoDB数据库
NodeJs连接操作MongoDB数据库 一,介绍 MongoDB是一种文档导向数据库管理系统,由C++撰写而成.介绍如何使用 Node.js 来连接 MongoDB,并对数据库进行操作. Mongo ...
- 不使用spring的情况下原生java代码两种方式操作mongodb数据库
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常. 主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...
- 不使用spring的情况下用java原生代码操作mongodb数据库的两种方式
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常. 主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...
- C# Asp.net中简单操作MongoDB数据库(二)
C# Asp.net中简单操作MongoDB数据库(一) , mongodb数据库连接可以回顾上面的篇幅. 1.model类: public class BaseEntity { /// < ...
- C# Asp.net中简单操作MongoDB数据库(一)
需要引用MongoDB.Driver.dll.MongoDB.Driver.core.dll.MongoDB.Bson.dll三个dll. 1.数据库连接: public class MongoDb ...
- PHP操作MongoDB 数据库
最近有个项目,需要用php操作mongoDb数据,整理如下 1,连接MongoDB数据库 $conn = new Mongo(); 其他链接方式 //$conn=new Mongo(); #连接本地主 ...
- python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战
python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...
随机推荐
- Confluence 6 附件存储文件系统的分级
从 Confluence 3.0 开始,附件的存储方式有了重大的改变和升级.如果你是从 Confluence 2.10 及其早期版本升级上来的,请参考 Upgrading Confluence 页面中 ...
- Confluence 6 关于统一插件管理器
所有的组件通过 统一插件管理器(Universal Plugin Manager)进行管理,这个也被称为 UPM.UPM 可以在几乎所有的 Atlassian 应用中找到,能够提供完整同意的插件安装管 ...
- vue的多选框
- thymleaf模板截取日期的年月日,去掉时分秒
简单描述:浏览同事提交的代码,发现他的日期回显中有一行代码,只截取到了年月日,记录一下 代码: //HTML代码 <span th:text="${#strings.substring ...
- samba 二进制包 tar.gz 安装
一.下载 sudo wget https://download.samba.org/pub/samba/stable/samba-4.8.10.tar.gz 二.解压 sudu tar -xvzf s ...
- 攻击WordPress和其他程序
1.SAAS服务(Software as a Service )管理其他作为内容管理的一个人框架的软件,http://www.turnkeylinx.org 上发布了很多测试应用的程序.WordPre ...
- bzoj 1812
什么鬼noip互测题... 这题很显然是树形dp,但设计状态以及转移是个难点 记状态f[i][j][k]表示以i为根节点的子树,离i最近的祖宗节点编号为j放了虫洞(伐木场?),i的子树内放了k个伐木场 ...
- php 常用字符函数学习
1.addcslashes 要向字符串中的特定字符添加反斜杠 <?php header('Content-type:text/html;charset=utf8'); $str='are you ...
- c++与java的几个不同点
Java.C.C++在近两年一直稳居世界编程语言排行榜前三名.Java与c++都是面向对象的语言,但Java晚于C++发布,部分语法和思想也参考了C++,只是Java 没有头文件.指针.运算符重载.虚 ...
- .NoSuchBeanDefinitionException: No bean named 'userService' available