我正在 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() 函数正常工作?任何帮助或指导将不胜感激。谢谢!