簡體   English   中英

貓鼬條件填充 findById()

[英]Mongoose conditional populate with findById()

僅當目標模型包含某個屬性時,我才嘗試填充字段。 下面,我只想在 Book 的gift屬性設置為 false 時填充 Book 的product ,但它似乎不起作用:

//Schema
const bookSchema = new mongoose.Schema({

    gift: { type: Boolean, default: false },
    date: { type: Date, default: Date.now },
    author: { type: [authorSchema] },
    product: { type: [productSchema] }
}

// Conditional Populate
result = await Book
    .findById(bookID)
    .populate("author", "name")
    .populate("product", "price", { gift: false } )

[編輯]

正如 Vinícius Belló 所建議的,填充現有文檔是有效的。

// Conditional Populate
const result = await Book
    .findById(bookID)
    .populate("author", "name");

if (!result.gift) {
    await result
        .populate("product", "price")
        .execPopulate();
}

您可以在不填充產品的情況下接收結果,然后在禮品為假時填充結果變量。 我建議您閱讀 mongoose 文檔https://mongoosejs.com/docs/populate.html#populate_an_existing_mongoose_document 的這一部分。 如果這對您有幫助,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM