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 ...
随机推荐
- Android UiAutomator 快速调试
背景:在Eclipse中不能直接运行Uiautomator工程,所以每次编写一份用例都要进行手动输入命令,很烦.调试起来不仅繁琐还浪费时间.网上找到一份快速调试的代码UiAutomatorHelper ...
- spark submit参数及调优
park submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数. 使用格式: ./bin/spark-submit \ ...
- kali linux 更新问题
1.使用一次更新和升级软件替换 apt-get install && apt -y full -upgrade 之后使用 reboot重启 系统,重启之后 再次使用命令 ap ...
- Spring Boot配置大全
Spring Boot项目使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到 ...
- Android Studio启动时出现unable to access android sdk add-on list
目录 Android Studio First Run 检测 Android SDK 及更新,由于众所周知的原因,我们会「Unable to access Android SDK add-on lis ...
- gradle编译命令 & 自动打包等
./gradlew -v 版本号,首次运行,没有gradle的要下载的哦. ./gradlew clean 删除HelloWord/app目录下的build文件夹 ./gradlew build 检查 ...
- 深入理解javascript原型和闭包——从【自由变量】到【作用域链】
一直对闭包和变量作用域链模糊不清!!!有时都怀疑自己是不是脑袋秀逗啦还是范萌!! 先解释一下什么是“自由变量”. 在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用 ...
- 基于Redis的分布式锁到底安全吗
http://zhangtielei.com/posts/blog-redlock-reasoning.html
- es6 Map,Set 和 WeakMap,WeakSet
这些是新加的集合类型,提供了更加方便的获取属性值的方法,不用像以前一样用hasOwnProperty来检查某个属性是属于原型链上的呢还是当前对象的.同时,在进行属性值添加与获取时有专门的get,set ...
- 【Android】ImageView ScaleType属性值
ImageView.ScaleType / android:scaleType值的意义区别: CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的 ...