猫鼬 model.save() 错误 - 'Cannot apply $inc to a value of non-numeric type'
Mongoose model.save() error - 'Cannot apply $inc to a value of non-numeric type'
我在各自的文件中有 2 个猫鼬模型。
const userSchema = new mongoose.Schema({
name:{type: String, required: true},
postHistory:[{type: mongoose.Schema.Types.ObjectId, ref: "Posts"}]
)};
module.exports = mongoose.model("User", userSchema );
const postSchema = new mongoose.Schema({
name:{type: String, required: true},
post:[{postName:String, postContent:String}]
)};
module.exports = mongoose.model("Posts", postSchema );
现在,我正在尝试创建一个新的 post,保存它并让对象 ID 反映在用户架构中。为了简单起见,假设我有一个异步函数,其中传递模型内容以及某种用户 ID。
const post = new Posts({name:'John', post:[{postName:'My Comment', postContent:'My Full comment'}]);
await post.save(); <---This works as intended
const owner = await User.findById(userId); <--This retrieves the specific user post belongs to
owner.postHistory.push(post); <---Output now shows user with 1 post object within postHistory array
await owner.save(); <-- Error occurs here
这是错误发生的地方。我收到以下错误:
message": "Cannot apply $inc to a value of non-numeric type. {_id: ObjectId('5e7908fd1e2e656d81a9ba05')} has the field '__v' of non-numeric type string"
我相信我按照猫鼬文档遵循了正确的过程:Mongoose Model Ref
当我已经在 MongoDB 中的 User.postHistory 中嵌入了 post 个 ID 数组时,我没有收到此错误消息。只有当用户有一个空的 post 历史数组时才会发生这种情况(想想当用户将他的第一个 post 与用户关联时。
有什么建议吗?
找出解决方案。在 MongoDB 中,出于某种原因,文档中的 _v 属性 被保存为字符串而不是 int32。
对于我的一个文档,_v 属性是 int32,但对于另一个文档,它是字符串。通过将新文档中的 _v 更改为 int32,我现在能够正确地创建引用。
希望这对某人有所帮助。始终仔细检查文档中道具的类型。
我在各自的文件中有 2 个猫鼬模型。
const userSchema = new mongoose.Schema({
name:{type: String, required: true},
postHistory:[{type: mongoose.Schema.Types.ObjectId, ref: "Posts"}]
)};
module.exports = mongoose.model("User", userSchema );
const postSchema = new mongoose.Schema({
name:{type: String, required: true},
post:[{postName:String, postContent:String}]
)};
module.exports = mongoose.model("Posts", postSchema );
现在,我正在尝试创建一个新的 post,保存它并让对象 ID 反映在用户架构中。为了简单起见,假设我有一个异步函数,其中传递模型内容以及某种用户 ID。
const post = new Posts({name:'John', post:[{postName:'My Comment', postContent:'My Full comment'}]);
await post.save(); <---This works as intended
const owner = await User.findById(userId); <--This retrieves the specific user post belongs to
owner.postHistory.push(post); <---Output now shows user with 1 post object within postHistory array
await owner.save(); <-- Error occurs here
这是错误发生的地方。我收到以下错误:
message": "Cannot apply $inc to a value of non-numeric type. {_id: ObjectId('5e7908fd1e2e656d81a9ba05')} has the field '__v' of non-numeric type string"
我相信我按照猫鼬文档遵循了正确的过程:Mongoose Model Ref
当我已经在 MongoDB 中的 User.postHistory 中嵌入了 post 个 ID 数组时,我没有收到此错误消息。只有当用户有一个空的 post 历史数组时才会发生这种情况(想想当用户将他的第一个 post 与用户关联时。
有什么建议吗?
找出解决方案。在 MongoDB 中,出于某种原因,文档中的 _v 属性 被保存为字符串而不是 int32。
对于我的一个文档,_v 属性是 int32,但对于另一个文档,它是字符串。通过将新文档中的 _v 更改为 int32,我现在能够正确地创建引用。
希望这对某人有所帮助。始终仔细检查文档中道具的类型。