node.js - mongoose如何update某属性的ref

【字号: 日期:2022-09-20浏览:40作者:雯心

问题描述

参见mongoose

两集合schema如下:

var personSchema = Schema({ _id : Number, name : String, age : Number, stories : [{ type: Schema.Types.ObjectId, ref: ’Story’ }]});var storySchema = Schema({ _creator : { type: Number, ref: ’Person’ }, title : String, fans : [{ type: Number, ref: ’Person’ }]});

当fans中的一个person取消了对story的喜好(fans的理解不知道对不对)那么story.fans是数组,可以delete掉该person的数据这个感觉还比较容易update

如果一个person的story不正确,同时story集合中并不存在该person的正确story;那么是remove该person的field:stories吗?还是能够将该person的field:stories这个ObjectId类置空?

希望各位能够提供一些建议?

问题解答

回答1:

如果我理解正确的话,如何处理需要依据应用的需求。

不过,你假设的第二种情形,如果populate正常的话,通常是不会出现的。

供参考。

回答2:关注的时候

添加 Stroy 到 Person ($addToSet去重, $push)

Person.update({ _id: persionId}, { $addToSet : { stories: storyId }}, function(err, raw)

添加 fans $addToSet(去重), $push(不去重)

Story.update({_id: storyId }, { $addToSet : { fans: persionId } }, function(err, raw)取消关注

删除 Person ($pull)

Person.update({ _id: persionId}, { $pull : { stories: storyId }}, function(err, raw)

删除 fans ($pull)

Story.update({_id: storyId }, { $pull : { fans: persionId } }, function(err, raw)

相关文章: