mongodb - mongoose 怎么多个model查询

【字号: 日期:2023-06-10浏览:30作者:雯心

问题描述

比如

aModel = { user_id: String, file_name: String, page_id: Number}

fileSchema = new Schema({ page_id: Number, key: String, doc: String, title: String, sym: String});bModel = { user_id: String, file_name: String, origin_file: String, new_file: [fileSchema]}

已知user_id,file_name,page_id,model是异步的,怎么同时查找这两个model,得到两个结果后再进行下一步

问题解答

回答1:

代码如下,其实我感觉写的一点也不优雅...

var aDocs ,bDocs =null ;aModel.find({ user_id:xx , file_name:xx , page_id:xx}) .then(function(docs){aDocs = docs;return bModel.find({ user_id:xx , file_name:xx , page_id:xx}) }) .then(function(docs){bDocs = docs ;other codes })回答2:

如果你需要他们并发执行的话,可以用Promise

const query1 = aModel.find(query)const query2 = bModel.find(query)Promise.all([query1, query2]).then(rs => {})

如果不需要并发进行,可以同步进行的话,可以用 yield 或者 async/await

const query1 = yield aModel.find(query)const query2 = yield bModel.find(query)// 需要node7以上const query1 = await aModel.find(query)const query2 = await bModel.find(query)回答3:

楼上当然是不怎么优雅的 你需要的是async/await 所以把node升级到7.6以上吧

回答4:

是吗?mongoose api没有多表查询的方法吗?

相关文章: