我被困在這里,因為我不確定如何為一個物件設定多個 ref 以指定它的 objectid。
例如:(我如何將發件人指定為賣家或者它可以是用戶,此外,如果有這種情況,最好的方法是什么)
const messageSchema = mongoose.Schema({
message: {
text: { type: String, required: true },
type: String, //type can be or 'message', 'image',
},
members: {
seller: {
type: mongoose.Schema.Types.ObjectId,
ref: "Seller",
required: true,
},
client: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
required: true,
},
},
sender: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
required: true,
},
readOn: { type: Date },
read: Boolean, //}, {
timestamps: true,
});
我想能夠說:
sender: {
type: mongoose.Schema.Types.ObjectId,
ref: ["User", "Seller"],
required: true,
},
這可能嗎?提前非常感謝。
uj5u.com熱心網友回復:
您可以使用 refPath 進行動態參考。
const messageSchema = mongoose.Schema({
sender_type: String // user or seller
sender: {
type: Schema.Types.ObjectId,
refPath: 'sender_type'
}
})
或者
你可以使用虛擬機
const messageSchema = new mongoose.Schema({
...
sender: {
type: mongoose.Schema.Types.ObjectId,
required: true
},
...
},
{
toJSON: { virtuals: true }
});
然后像這樣定義虛擬模式:
order_schema.virtual('User', {
ref: 'User', // Your User model name
localField: 'sender',
foreignField: '_id',
justOne: true
});
order_schema.virtual('Seller', {
ref: 'Seller',
localField: 'sender',
foreignField: '_id',
justOne: true
});
然后在資料庫操作中定義兩個填充:
Model.find(search_filter)
.populate('User')
.populate('Seller')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477351.html
標籤:javascript 节点.js mongodb 猫鼬
