猫鼬 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,我现在能够正确地创建引用。

希望这对某人有所帮助。始终仔细检查文档中道具的类型。