mongoose各种写法比较,以User模型查询为例进行
第一种写法
//findone两个参数,第一个参数是查询的条件,第二个参数是查询的返回结果,结果中有两个参数分别是错误的反馈,和正确的返回结果。 User.findOne({id:id},(err,doc)=>{ })
第二种写法
//直接查询,then之后返回两个Promise函数,第一个是then之前的事件如果成功执行,第二个是失败执行。 User.findOne({id:id}).then(res=>{ })
多条件查询适合用then
router.get(‘/article/getlist‘, (req, res) => { Article.find().sort({_id:-1}).populate(‘category‘).then(doc => { res.send(doc) }) })
用exec()分开写
// 可以先定义条件,链式写法 var goodsModel = Goods.find(params).limit(pageSize).skip(skip); // 第一次定义之后依然可以链式继续定义 goodsModel.sort({ ‘salePrice‘: sort }); // 最后用exec()执行。 goodsModel.exec(function (err, doc) { if (err) { res.json({ status: ‘1‘, msg: err.message }) } else { res.json({ status: ‘0‘, msg: ‘‘, }) } })
如果是连续两个或者多个then
查询首次执行then,默认遵守promise规则,但是从第二个开始的then,你必须手动返回一个成功或者失败的promise执行 return Promise.reject(),来指定执行then后的第一个还是第二个。
时间: 2024-12-14 16:35:10