15

私はマングースクエリからの戻りデータに追加したい:

User.findById(userId, function(err, data) {
  if (!err) {
    data.newvar = 'Hello, world';
  }
});

ただし、出力をコンソール ログに記録すると、newvar が存在しません。Underscoreのextendを使用してこれも試しました:

_.extend(data, {'newvar': 'Hello, world'});

運もありません。ドキュメントをネストしているため、浅いコピーを使用しても機能しません。ここにデータを追加する方法はありますか?

4

3 に答える 3

23

これを処理する 1 つの方法は、マングース モデル インスタンスをプレーンなオブジェクトに変換し、それを呼び出して完全に制御するtoObject()ことです。

User.findById(userId, function(err, data) {
  if (!err) {
    data = data.toObject();
    data.newvar = 'Hello, world';
  }
});

より構造化されたソリューションが必要な場合は、ここで説明されているようにスキーマに仮想属性を追加できます。

于 2012-11-12T19:49:58.570 に答える
5

結局のところ、Mongoose ドキュメントは独自の特別なクラスであり、標準の Javascript オブジェクトではありません。拡張可能な JavaScript オプションを取得するには、toObject() メソッドを使用する必要があります。

于 2012-11-12T19:49:43.627 に答える