node mongoose操作
参考 https://mongoosejs.com/docs/connections.html
mongoose 学习笔记 https://segmentfault.com/a/1190000010688972
mongoose 增删查改笔记 https://segmentfault.com/a/1190000008245062
1 安装
npm install mongoose
2 数据库连接
const mongoose = require("mongoose");
//数据库连接
//mongoose.connect('mongodb://username:password@host:port/database?options...');
mongoose.connect('mongodb://localhost/a');
const db = mongoose.connection;db.on("error", function() {console.log("MongoDB错误");
});
db.once("open", function() {console.info("MongoDB成功");
});
db.on('disconnected', function () {console.warn('MongoDB连接断开');
});module.exports = db;
连接多个库
const Mongoose = require("mongoose");
// 连接字符串格式为mongodb://主机/数据库名
//const conn = mongoose.createConnection('mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]', options);
const WeiMongo = Mongoose.createConnection('mongodb://127.0.0.1/WEI';
const ChuruMongo = Mongoose.createConnection('mongodb://127.0.0.1/CHURU');WeiMongo.on("error", function() {console.log("MongoDB连接错误");
});
WeiMongo.once("open", function() {console.log("MongoDB连接成功");
});
WeiMongo.on('disconnected', function () {console.log('MongoDB连接断开');
});ChuruMongo.on("error", function() {console.log("MongoDB错误");
});
ChuruMongo.once("open", function() {console.log("连接MongoDB成功");
});
ChuruMongo.on('disconnected', function () {console.log('MongoDB连接断开');
});exports.WeiMongo = WeiMongo;
exports.ChuruMongo = ChuruMongo;
连接带参数
const options = {useNewUrlParser: true,useCreateIndex: true,useFindAndModify: false,autoIndex: false, // Don't build indexesreconnectTries: Number.MAX_VALUE, // Never stop trying to reconnectreconnectInterval: 500, // Reconnect every 500mspoolSize: 10, // Maintain up to 10 socket connections// If not connected, return errors immediately rather than waiting for reconnectbufferMaxEntries: 0,connectTimeoutMS: 10000, // Give up initial connection after 10 secondssocketTimeoutMS: 45000, // Close sockets after 45 seconds of inactivityfamily: 4 // Use IPv4, skip trying IPv6
};
mongoose.connect(uri, options);
3 定义文档模型
const mongoose = require("mongoose");
const Schema = mongoose.Schema;var blogSchema = new Schema({title: String,author: String,body: String,comments: [{ body: String, date: Date }],date: { type: Date, default: Date.now },hidden: Boolean,meta: {votes: Number,favs: Number}
});module.exports = mongoose.model('Blog', blogSchema);
模型Schema类型
- String
- Number
- Date
- Buffer
- Boolean
- Mixed
- ObjectId
- Array
- Decimal128
- Map
声明Schema类型
var schema1 = new Schema({test: String // `test` is a path of type String
});var schema2 = new Schema({// The `test` object contains the "SchemaType options"test: { type: String } // `test` is a path of type string
});
Models是从Schema编译的构造函数,Models的实例称为 文档。模型负责从底层MongoDB数据库创建和读取文档。
//定义schema
var schema = new mongoose.Schema({ name: 'string', size: 'string' });
//编译schema
var Tank = mongoose.model('Tank', schema);
//查询
Tank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec(callback);
//删除
Tank.deleteOne({ size: 'large' }, function (err) {if (err) return handleError(err);// deleted at most one tank document
});
4 数据库操作
class Common {//查找所有数据findAllData(target) {return new Promise((resolve, reject) => {target.find().exec((err,docs) => {if (err) {reject(err);} else {resolve(docs);}});});}//查找一条数据findOneData(target,condition) {return new Promise((resolve, reject) => {target.findOne(condition).exec((err,docs) => {if (err) {reject(err);} else {resolve(docs);}});});}//限制条目数排序查找findLimitData(target,limitNum,sortCondition) {return new Promise((resolve, reject) => {target.find().limit(limitNum).sort(sortCondition).exec((err,docs) => {if (err) {reject(err);} else {resolve(docs);}});});}//跳过n条排序查找h条findSpecificData(target,limitNum,sortCondition,n,condtion) {return new Promise((resolve, reject) => {target.find(condtion).limit(limitNum).skip(n).sort(sortCondition).exec((err,docs) => {if (err) {reject(err);} else {resolve(docs);}});});}//根据_id查找findById(target,_id) {return new Promise((resolve, reject) => {target.findById(_id).exec((err,docs) => {if (err) {reject(err);} else {resolve(docs);}})});}//根据条件更新一条数据updateOne(target,condition,doc) {return new Promise((resolve, reject) => {target.updateOne(condition,doc).exec((err,docs) => {if (err) {reject(err);} else {resolve(docs);}})});}//根据条件查询findSpecifiedData(target,jsonQuery){return new Promise(function(resolve, reject){target.find(jsonQuery,function(err,docs){if (err) {reject(err);} else {resolve(docs);}});});}//添加数据createData(target,jsonData) {return new Promise(function(resolve, reject){target.create(jsonData,function(err,docs){if (err) {reject(err);} else {resolve(docs);}});});}//清空表数据removeAllData(target) {return new Promise(function (resolve, reject) {target.remove().exec(function (err, docs) {if (err) {reject(err);} else {resolve();}});});}//根据条件删除数据removeData(target,query) {return new Promise(function (resolve, reject) {target.remove(query).exec(function (err, docs) {if (err) {reject(err);} else {resolve(docs);}});});}//添加表多数据createManyData(target,data) {return new Promise(function (resolve, reject) {target.insertMany(data,function (err, docs) {if (err) {reject(err);} else {resolve();}});});}//添加函数addNewData(target,query,addDataJson) {return new Promise(function (resolve, reject) {target.findOne(query, function (err, docs) {if (err) {reject(err);} else {if (!docs) {//添加target.create(addDataJson, function (err, docs) {if (err) {reject(err);} else {resolve(docs);}});} else {resolve();}}});});}//create or updateManyupdateManyOrCreate(target,query,addDataJson) {return new Promise(function (resolve, reject) {target.findOne(query, function (err, docs) {if (err) {reject(err);} else {if (!docs) {//添加target.create(addDataJson, function (err, docs) {if (err) {reject(err);} else {resolve(docs);}});} else {//更新target.updateMany(query, addDataJson, function (err, docs) {if (err) {reject(err);} else {resolve(docs);}});}}});});}//create or updateOneupdateOneOrCreate(target,query,addDataJson) {return new Promise(function (resolve, reject) {target.findOne(query, function (err, docs) {if (err) {reject(err);} else {if (!docs) {//添加target.create(addDataJson, function (err, docs) {if (err) {reject(err);} else {resolve(docs);}});} else {//更新target.updateOne(query, addDataJson, function (err, docs) {if (err) {reject(err);} else {resolve(docs);}});}}});});}
}module.exports = new Common();
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
