赞
踩
Mongoose是一个第三方的用于操作mongodb的库,与之前一篇文章中直接使用原生的由mongodb提供的CURD来直接操作数据库不同,在Mongoose中提供了更高层的抽象,增加了自动检查的机制。其主要结构如下:
Schema在node.js中的mongoose库中,主要作用是作为一个模板,通过这个模板可以映射到数据库和数据表。同时在Schema下面一个层级还有Model,通过Model可以创建一个数据文档对象,通过这个对象就可以实现对数据库的增删改查操作。
var productSchema = new Schema({
name:String,
type:String,
price:Number,
innum:Number,
indate:Date,
outnum:Number,
{
type: Date,
default: Date.now
}
})
var productmodel = mongoose.model("product", productSchema);
Model.create(doc(s),[callback])
//删除所有符合条件
Model.remove(conditions, [callback])
//删除一条记录
Model.deleteOne(conditions, [callback])
//删除多条记录
Model.deleteMany(conditions, [callback])
//更新所有符合条件
Model.update(conditions, doc, options, callback)
//更新多条符合条件
Model.updateMany(conditions, doc, options, callback)
//更新一条
Model.updateOne(conditions, doc, options, callback)
//查询所有符合条件的文档
Model.find(conditions, [projection], [options], [callback])
//根据文档的id属性查询文档
Model.findByID(id, [projection], [options], [callback])
//查询符合条件的第一个文档
Model.findOne([conditions], [projection], [options], [callback])
//创建一个文档,直接实例化一个model就可以实现
var prodoc = new productmodel({
name:"旺仔",
type:"食品",
price:6,
innum:100,
indate:2023-04-05,
outnum:20,
outdate:2023-04-08
})
prodoc.save(function(err)){
if(!err){
console.log("数据添加成功!");
}
}
在向用户显示数据的时候会遇到想要只向用户展示一部分的数据字段而不想展示所有的数据字段的情况,同时还不想删除数据库中的内容,这时候就需要将文档对象转换成JSON,变成一个单独用来存储数据的格式。需要注意的是转换以后Document相关的方法都没法使用了。
doc = doc.toObject()
//删除数据对象中的price字段
Delete doc.price;
新建一个connection.js的文件用于封装连接数据库的操作
const mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1/shop");
mongoose.connection.once("open",function() {
console.log("数据库连接成功~~~");
});
再别的文件中只需要:
require("./tools/connection")
就可以实现连接,而不用每次连接都要在代码前面写这么长一串内容。
创建models文件夹,然后创建一个名称为product的js文件,如果有需要仅仅需要在这个文件夹下面继续新建模块就可以了。
var mongoose = require("mongoose") var Schema = mongoose.Schema; var productSchema = new Schema({ name:String, type:String, price:Number, innum:Number, indate:Date, outnum:Number, outdate:{ type: Date, default: Date.now } }); var productmodel = mongoose.model("product",productSchema); //将上述代码导出为模块 module.export = Productmodel;
在其他的文件中只需要以下代码就可以调用:
const product = require("./models/product")
const express = require("express"); const router = express.Router(); const operation = require("../tools/opra"); const { ObjectId } = require("mongodb"); //新增数据 router.post("/add",async(req,res)=>{ let result = await operation.insert([{ "name": "taddy", "type":"toy", "price": 15, "innum":20, "indate":new Date("October 13, 2023 11:13:00"), "outnum":13, "outdate":new Date("October 13, 2023 15:13:00") }]) res.send("数据新增成功!" + result); }) //删除数据 router.delete("/:name", async(req, res)=>{ try { var name = req.params; var result = await operation.remove({name:name}); res.send("删除成功"); return result; } catch (err) { res.send(err); } }) //修改数据 router.put("/:name",async(req,res)=>{ var name = req.params; var newdata = req.body; try{ let result = await operation.update({name:name},newdata); res.send("数据修改成功"); return result; }catch (err) { res.send("数据修改失败") } }) //查询数据 router.get("/search/:name", async(req, res)=>{ let name = req.params; var projection = "name -_id type price innum outnum indate outdate"; var result = await operation.search({name:name},projection,function(err){ if(!err){ console.log("查询成功!"); }else{ console.log(err); } }) return result; }) //汇总数据 module.exports = router;
require("./connections"); const product = require("../models/product"); //增操作 async function insert(doc){ product.create(doc,function(err){ if(!err) { console.log("数据插入成功"); }else{ console.log(err); } }) } //删操作 async function remove(query){ product.remove(query,function(err){ if(!err) { console.log("删除成功!"); }else{ console.log(err); } }) } //改操作 async function update(query, newdata){ product.update(query, newdata,function(err){ if(!err) { console.log("数据更新成功"); }else{ console.log(err); } }) } //查操作 async function search(query,projection){ result = product.find(query,projection,function(err){ if(!err) { console.log("查询成功"); }else{ console.log(err); } }) return result; } //数据汇总 async function sumup(){ //调用aggregate方法 } module.exports = { insert, remove, update, search, sumup }
const express = require("express")
const app = new express()
const router = require("./router/router")
app.use("/",router)
app.listen(80, ()=>{
console.log("server running on localhost")
})
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。