这个类型转换错误与_id有什么关系?转换为objecd失败,值“123”;路径" id"'
What's this casting error has to do with _id? "Cast to ObjectId failed for value "123" at path "_id"'
我正在尝试根据以下模型的查找标准填充数组。
function initSchemaAndModel() {
observationNameAndTypeSchema = new mongoose.Schema({
observationName:String,
observationPrefixNumber:String,
observationNumbersList: [{type:String, unique:true}]
});
ObservationNameAndTypeObject = mongoose.model("observation_name_and_type_model", observationNameAndTypeSchema);
}
填充方法的代码。
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}
在引用另一个模型之前不需要填充子文档
ObservationNameAndType.getObservationNameAndTypeModel()
.findOne({observationName: "OBSERVATION_NAME"})
.exec(function (err, observationNameAndTypeMatchedObject) {
if(err) {
console.error("error in finding ", err);
return;
}
observationNameAndTypeMatchedObject.observationNumbersList.push(object);
observationNameAndTypeMatchedObject.save();
});
如果你只需要,那么你可以直接使用$push
,如下所示
ObservationNameAndType.update({observationName: "OBSERVATION_NAME"}, {$push: {observationNumbersList: object}}, function (err, observationNameAndTypeMatchedObject) {
if(err) {
console.error("error in finding ", err);
return;
}
});
填充仅在字段引用任何集合时有效。在您的查询中,您填充"observationNumbersList",但在模式中,您只存储字符串。你的模式应该是
observationNameAndTypeSchema = new mongoose.Schema({
observationName:String,
observationPrefixNumber:String,
observationNumbersList: [{type:mongoose.Schema.Types.ObjectId}]
});
如果你不使用人口,那么去掉.populate("observationNumbersList")
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- difference between '$(<%= DDL.ID %>) & $('
- 使用Javascript获取所选选项ID
- 根据id将json数组组合为一个json数组
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 铬:“;未捕获的语法错误:意外的标记:"
- 对id以某个字符串开头的元素进行计数
- Javascript复选框函数:;缺少:在属性id之后"
- 取出图像标签alt:丢失"没有alt-id的图像标签是优选的并且不显示丢失的“;
- "无法读取属性'id'未定义的“;解析工厂中声明的数组时
- 无法调用方法“”;getEditResponseUrl"当使用表单ID打开表单时,绑定到工作表的Google
- Jade:带双“的数据id""&”;
- Knockout.js动态选择模板错误:"找不到ID为'的模板'&”;
- 如何获得类似id的"invokedOn”;使用Bootstrap ContextMenu通过右键单击事件显示文
- 可以't$.parseJSON()当字符串保持src=“”时"或者id=“0”"属性
- chrome.identity.getAuthToken返回"错误的客户端id:{0}”;错误
- 使树形式[{“id": 1},{“id": 2,“children":[{“id":
- Javascript-JQuery:找不到id和.html(")或getElementById并设置inner
- "ctl00_ Body”;在asp.net中生成的对象'id
- & lt;跨度id =“display_XXXXX"祝辞& lt; / span>没有显示任何东西,或者显示“未