mongoose
链接mongodb
数据库Node.js链接mongodb
数据库有不少种方法,经过mongoose
模块引入是其中的一个方法
|---|根目录 |---|---|connect.js(mongoose测试链接) |---|---|user.js(定义user数据表) |---|---|operate.js(定义mongodb的增删改查功能) |---|---|login.js(Node后台调用operate.js文件的方法处理数据)
mongoose
测试链接当前使用的mongoose
版本为4.13.7
connect.js
const mongoose = require("mongoose"); const DB_URL = "mongodb://127.0.0.1:27017/infos"; mongoose.Promise = global.Promise; mongoose.connect(DB_URL, { useMongoClient: true }); mongoose.connection.on("connected", () => { console.log("mongodb数据库链接成功") }); mongoose.connection.on("error", (error) => { console.log("mongodb数据库链接失败", error) }); module.exports = mongoose;
mongoose
模块const mongoose = require("mongoose");
mongodb
的本机地址const DB_URL = "mongodb://127.0.0.1:27017/infos";
127.0.0.1
是本地IP
地址27017
是mongodb
的服务启动端口infos
是mongodb
的一个数据集合名字javascript
mongodb
能够有不少数据集合,每一个集合中能够有不少数据表。mongodb
),里边分了不一样的停车区(集合
,这里的infos
),每一个停车区能够停不少车((下文提到的user
),至关于每一个数据集合里边能够有不少张数据表)。若是须要给mongodb
加上用户及密码,能够这样java
const DB_URL = "mongodb://username:password@127.0.0.1:27017/infos";
username
为用户名,中间英文:
,password
为密码,其他不变mongoose.connection.on("connected", callback())
mongodb数据库链接成功
mongoose.connection.on("error", callback())
mongodb数据库链接失败
和错误信息mongoose
模块module.exports = mongoose;
user.js
const mongoose = require('mongoose'); const db = require('./connect.js'); const userSchema = new mongoose.Schema({ number: { type: Number}, email: { type: String }, password: { type: String }, rePassword: { type: String }, mobile: { type: String }, question: { type: String }, answer: { type: String }, }); let userModel = db.model('user', userSchema); module.exports = userModel;
mongoose
模块const mongoose = require("mongoose");
mongodb
数据库的模块const db = require('./connect.js');
Schema
const userSchema = new mongoose.Schema({})
mongoose
对象的Schema
属性建立一个Schema
对象Schema
原意为架构
在mongodb
中,每个数据字段都要有固定的数据类型,因此Schema
在mongoose
中的意思为,每一张数据表对应的字段的数据类型
Schema
所可以拥有的数据类型有如下几个mongodb
String
Number
Date
Buffer
Boolean
Mixed
ObjectId
Array
字段介绍,以number
字段为例数据库
type
是该字段的数据类型default
是该字段的默认值let userModel = db.model('user', userSchema);
userModel
db.model
方法,第一个参数是数据表的名字,第二个参数是该数据表使用的Schema
module.exports = userModel;
operate.js
中使用这个对象的mongodb
的增删改查方法mongodb
的增删改查功能operate.js
let userModel = require('./user.js'); module.exports = { save(data) { return new Promise((resolve, reject) => { userModel.create(data, (err, docs) => { if (err) { rejct(err); } else { resolve(docs); } }) }) }, find(data = {}, fields = null, options = {}) { return new Promise((resolve, reject) => { //model.find(须要查找的对象(若是为空,则查找到全部数据), 属性过滤对象[可选参数], options[可选参数], callback) userModel.find(data, fields, options, (error, doc) => { if (error) { reject(error) } else { resolve(doc) } }) }) }, findOne(data) { return new Promise((resolve, reject) => { //model.findOne(须要查找的对象,callback) userModel.findOne(data, (error, doc) => { if (error) { reject(error) } else { resolve(doc) } }) }) }, findById(data) { return new Promise((resolve, reject) => { //model.findById(须要查找的id对象 ,callback) userModel.findById(data, (error, doc) => { if (error) { reject(error) } else { resolve(doc) } }) }) }, update(conditions, update) { return new Promise((resolve, reject) => { //model.update(查询条件,更新对象,callback) userModel.update(conditions, update, (error, doc) => { if (error) { reject(error) } else { resolve(doc) } }) }) }, remove(conditions) { return new Promise((resolve, reject) => { //model.update(查询条件,callback) userModel.remove(conditions, (error, doc) => { if (error) { reject(error) } else { resolve(doc) } }) }) } };
user
模块let userModel = require('../models/users');
userModel
这个数据表直接的调用mongodb
的各类方法operate
处理数据login.js
const express = require('express'); const router = express.Router(); let operate = require('./operate'); router.post('/', function (req, res, next) { let param = {}; param.email = req.body.email; param.password = req.body.password; console.log(param); operate.save(param).then(result => { if (result) { res.json({ data: result, success: true }) } else { res.json({ data: result, success: false }) } }); }); module.exports = router;
Express
的router
方法Express
,定义一个post
方法post
方法传递的对象数据挂在在req.body
上operate.save()
方法,传递param
对象参数result
,对获取到的结果进行进一步处理