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

それとも、グローバルに参照されるオブジェクトを1つだけ維持する方がよいでしょうか。

4

1 に答える 1

10

ベストプラクティスは、Mongooseモデルインスタンスをclientアクティブに使用している間だけ維持することです。これは、データベース内のインスタンスと簡単に同期しなくなる可能性があるためです。古くなっている可能性のあるコピーを更新する代わりに、client必要なときにいつでもオブジェクトを再作成します。findOne

于 2012-08-30T13:23:33.810 に答える