【发布时间】:2022-01-28 06:24:43
【问题描述】:
我有两个集合,其中一个包含系统列表,另一个包含连接到系统的电池列表。我想使用填充方法,以便当我使用系统 ID 运行查询时,它会显示电池的详细信息。 我的系统和电池架构如下。
const mongoose = require('mongoose');
const { Schema } = mongoose;
const SystemSchema = new Schema(
{
serialNumber: String,
location: String,
BPIDs: [
{
type: Schema.Types.ObjectId,
ref: 'batteryPack'
}
]
},
{
timestamps: true
}
);
const Systems = mongoose.model('system', SystemSchema);
module.exports = Systems;
我的电池型号如下:
const mongoose = require('mongoose');
const { Schema } = mongoose;
const batteryPackSchema = new Schema(
{
systemSerialNumber: String,
batteryID: Number,
batteryVoltage: Number,
totalCurrent: Number,
stateOfCharge: Number
{
timestamps: true
}
);
const BatteryPacks = mongoose.model('batteryPack', batteryPackSchema);
module.exports = BatteryPacks;
我的查询路线如下:
router.get('/details/:id', async (req, res) => {
try {
const deviceDetails = await Systems.findOne({ _id: req.params.id }).populate('batteryPack').lean();
return res.status(200).send({
deviceDetails
});
} catch (error) {
return res.status(500).send(error.stack);
}
});
通过邮递员运行查询时显示以下错误:
MongooseError:无法填充路径
batteryPack,因为它不在您的架构中。将strictPopulate选项设置为 false 覆盖。 在 getModelsMapForPopulate
【问题讨论】:
-
您应该填充 BPID
-
非常感谢!你是救生员!我是文档引用的新手,我误解了文档。
-
我猜你已经得到了答案,现在你应该关闭这个问题或发布一个答案(在提出问题 2 天后)解释出了什么问题。这可以防止该问题出现在未回答的问题中,从而帮助网站。