簡體   English   中英

Mongoose Virtual Populate

[英]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.

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