10

需要明确的是,这个问题涉及从数据库加载数据,而不是更新数据库中的文档。

使用以下架构:

new mongoose.Schema
  name: String
  code:
    type: String
    index:
      unique: true
  _contacts: [
    type: mongoose.Schema.Types.ObjectId
    ref: 'Person'
  ]

我已经像这样创建了我的文档:

client = new Client code:'test',name:'test competition',contacts:[]
client.save()

在应用程序的其他地方或通过 API 调用,它不能轻易引用上面缓存的版本:

Client.findOne(code:'test').exec (err,client) ->
  return if err or not client
  client._contacts.push person.id # person has come from somewhere
  client.save (err) ->
    return err if err

如果我们返回到我们的原始客户端对象,我想知道是否有一种方法可以为整个文档或仅针对特定路径刷新该对象。例如;

client.refresh '_contacts', (err) ->
  return err if err

还是只维护一个全局引用的对象会更好吗?

4

1 回答 1

10

最佳实践是只保留一个 Mongoose 模型实例client,只要您积极使用它,正是因为它很容易与数据库中的内容不同步。client在需要时重新创建对象,findOne而不是尝试刷新可能过时的副本。

于 2012-08-30T13:23:33.810 回答