mongoose 怎么多个model查询

发布于 2022-09-05 04:40:20 字数 444 浏览 23 评论 0

比如

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,
得到两个结果后再进行下一步

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

七颜 2022-09-12 04:40:20

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

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
    })
三人与歌 2022-09-12 04:40:20

如果你需要他们并发执行的话,可以用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)
痕至 2022-09-12 04:40:20

使用mongoose的ref类型。类似关系型数据库的外键,再使用populate联合插询

狼亦尘 2022-09-12 04:40:20

clipboard.png
连查16张表, mongodb 本身是no sql 数据库,所有不会提供多表查询的方法, 你只能node异步控制查询

以可爱出名 2022-09-12 04:40:20

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

生寂 2022-09-12 04:40:20

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文