后台更新 denormalization 化数据的方案
发布于 9 年前 作者 rankun203 3402 次浏览 最后一次编辑是 8 年前 来自 问答

这里说的 denormalization 是参照 http://blog.mongodb.org/post/87892923503/6-rules-of-thumb-for-mongodb-schema-design-part-2 给出的建议.

为了保持数据的一致性, 下面的一个 Message 对象, 当 creator 属性更新之后, Message 中的对应信息也应该进行更新.

{
  "__v": 0,
  "_id": "55ddc3c44b7e984203c33451",
  "chatroom": "55dd1c7c54c8365d527b2e0b",
  "creationTime": "2015-08-26T13:48:52.622Z",
  "creator": {
    "username": "Pocoyo",
    "avatar": "4A90B80ADFAB4FB283FFF404DB216791/55dc35abbedda6c61bbb64f0_20150825175448.jpg",
    "_id": "55dc35abbedda6c61bbb64f0"
  },
  "mentions": [],
  "msg": "John"
}

通常的办法是什么?

2 回复

ref指向一个对象,形成1:n

@i5ting 这样我有些 DELETE(findByIdAndRemove), PUT(findByIdAndUpdate) 类型的接口返回的文档 creator 字段还是 ObjectID, 那可能会导致每次返回的对象字段值类型不一样.

当然了我也可以每次操作都 populate 一次, 但这样似乎也不太好. 这时我想到要自动 populate, 于是有个 mongoose-autopopulate 包, 不过才 18 个 star, 有点心虚呃. 感觉主流方法应该不是这样子的.

回到顶部