问题描述
比如
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没有多表查询的方法吗?