这是我的问题:
user.toJSON()
或user.toObject()
对其进行序列化,然后将其发送到网络中。在M2上,我所做的只是new User(userObject)
。 .save()
时,它会将其解释为新对象并尝试insert()
而不是.update()
。.isNew = false
,但是,在更新时,delta(存储模型和更新值之间的差异)现在包含所有数据,并且mongo抱怨它不会更新文档&#39 ; s _id 有一种优雅的方法可以使用本机方法或插件来解决这个问题吗?我做错了吗?!
答案 0 :(得分:0)
可能是错误的,但您可以尝试在创建的用户对象上使用upsert()
而不是保存它。
如果您打算经常使用它,最终可能会在架构中定义一个新的静态方法,例如:
Schema.statics.createOrUpdate = function(object, callback) {
statics.upsert(this, object, callback);
};
这样您就可以将用户数据传递给M2,而在M2上,您可以轻松更新。
答案 1 :(得分:0)
这是一个迟到的电话,但在找到Model.hydrate
方法之前我遇到了同样的问题。
http://mongoosejs.com/docs/api.html#model_Model.hydrate
从预先保存的现有原始数据创建新文档的快捷方式 在DB中。返回的文档没有标记为已修改的路径 最初
因此可以使用M2 User.hydarate(userObject)
代替new User(userObject)
,而无需将isNew设置为false。