如何在 sails.js 中与 mongoDB 创建一对多关联,特别是当 id 是字符串而不是 ObjectId 时?

问题描述 投票:0回答:0

我正在 Node.js 应用程序中使用 Waterline ORM sails.js,并且我有两个模型:“Owners”和“Pets”。我面临的问题是“Owners”模型中的“id”字段是一个对象ID,而在“Pets”集合中,它被保存为字符串。

以下是模型的定义方式:

models/Pets.js

attributes:{
    ownerId: {
        model: "Owners",
        columnName: "user.owner_id",
    },
}
models/Owners.js

attributes:{
    pets: {
        collection: "Pets",
        via: "ownerId",
    },
}

由于 ID 类型不匹配,我在使用 Waterline 的内置方法(如 .populate() 或 .findOne())获取宠物的主人时遇到了麻烦。由于数据类型差异,自动填充未按预期工作。

我尝试过像这样使用 .populate() 和 .findOne() :

Pets.findOne({ id: petId }).populate("ownerId").exec((err, pet) => {
    if (err) {
        // Handle error
    }
    console.log(pet.ownerId); // Returns null
});

不幸的是,pet.ownerId 总是返回 null,我怀疑这是因为 ID 类型之间不匹配。

如何处理 ID 类型不匹配并使 .populate() 函数正常工作?任何帮助或指导将不胜感激。谢谢!

mongodb sails.js waterline
© www.soinside.com 2019 - 2024. All rights reserved.