[英]Mongoose Virtual Populate
我有一個項目集合,用於存儲客戶ID和包含該ID以及客戶名稱的客戶集合。
我需要返回客戶名稱而不是項目API端點的ID,我正在嘗試在Mongoose中使用虛擬填充。
我有以下架構/模型配置......
const customerSchema = new mongoose.Schema({
"custId": String,
"custName": String,
"addr1": String,
"addr2": String,
"city": String,
"county": String,
"postcode": String,
"phone": String,
"email": String
});
customerSchema.virtual('names', {
ref: 'customers',
localField: 'custId',
foreignField: 'custId'
});
const projectSchema = new mongoose.Schema({
"projId": String,
"projName": String,
"custId": String,
"custName": {
type: mongoose.Schema.Types.ObjectId,
ref: 'customers'
},
"projDesc": String,
"projAdd1": String,
"projAdd2": String,
"projCity": String,
"projCounty": String,
"projPostcode": String,
"projLat": String,
"projLng": String,
"projStartDate": String,
"projEndDate": String,
"projStatus": String,
"projContacts": [
String
]
});
const custModel = mongoose.model("customers", customerSchema);
const projectModel = mongoose.model("projects", projectSchema);
並在我的API端點代碼中使用以下查詢...
var result = await projectModel.find().populate('names').exec();
API端點返回數據但不包括custName。
有人能幫忙嗎?
謝謝!
注意到我已將虛擬可用於客戶模型,因此更改如下...
const projectSchema = new mongoose.Schema({
"projId": String,
"projName": String,
"custId": String,
"custName": {
type: mongoose.Schema.Types.ObjectId,
ref: 'customers'
},
"projDesc": String,
"projAdd1": String,
"projAdd2": String,
"projCity": String,
"projCounty": String,
"projPostcode": String,
"projLat": String,
"projLng": String,
"projStartDate": String,
"projEndDate": String,
"projStatus": String,
"projContacts": [
String
]
});
projectSchema.virtual('names', {
ref: 'customers',
localField: 'custId',
foreignField: 'custId'
});
const customerSchema = new mongoose.Schema({
"custId": String,
"custName": String,
"addr1": String,
"addr2": String,
"city": String,
"county": String,
"postcode": String,
"phone": String,
"email": String
});
const custModel = mongoose.model("customers", customerSchema);
const projectModel = mongoose.model("projects", projectSchema);
默認情況下,Mongoose中的虛擬填充不會添加到輸出中。 添加以下內容並且有效...
projectSchema.set('toObject', { virtuals: true });
projectSchema.set('toJSON', { virtuals: true });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.