【发布时间】:2016-10-02 16:56:47
【问题描述】:
我正在尝试根据以下模型的查找条件填充数组。
function initSchemaAndModel() {
observationNameAndTypeSchema = new mongoose.Schema({
observationName:String,
observationPrefixNumber:String,
observationNumbersList: [{type:String, unique:true}]
});
ObservationNameAndTypeObject = mongoose.model("observation_name_and_type_model", observationNameAndTypeSchema);
}
这是 Populate 方法的代码。
ObservationNameAndType.getObservationNameAndTypeModel()
.findOne({observationName: "OBSERVATION_NAME"})
.populate("observationNumbersList")
.exec(function (err, observationNameAndTypeMatchedObject) {
if(err) {
console.error("error in finding ", err);
return;
}
observationNameAndTypeMatchedObject.observationNumbersList.push(object);
observationNameAndTypeMatchedObject.save();
});
由于某种原因,我收到此错误。我不明白是什么原因造成的。
{ [CastError: Cast to ObjectId failed for value "123" at path "_id"]
message: 'Cast to ObjectId failed for value "123" at path "_id"',
name: 'CastError',
kind: 'ObjectId',
value: '123',
path: '_id',
reason: undefined }
这是我在集合中插入的数据。
{observationName: "OBSERVATION_NAME", observationPrefixNumber: "1", observationNumbersList : "123"};
这是它在集合中的样子:
{ "_id" : { "$oid" : "57f13dd8607efc603a13168f"} , "observationName" : "OBSERVATION_NAME" , "observationPrefixNumber" : "1" , "observationNumbersList" : [ "123"] , "__v" : 0}
【问题讨论】:
-
因为_id是一个对象,而不是字符串“123”。
-
我明白了。我不是要求猫鼬填充_id。我要求 mongoose 查找具有上述查找条件的文档,然后填充 ObservationNumberList 数组。
标签: javascript node.js mongodb mongoose-schema