30

bスキーマのクエリの結果の一部として表示したい仮想を宣言していますが、オブジェクトに対して console.log を実行しても表示されません。スキーマは次のとおりです。

var schema = new mongoose.Schema(
{
    Name: { type: String }
},
{
    toObject: { virtuals: true }
});

schema.virtual("Greet").get(function()
{
    return "My name is " + this.Name;
});

その toObject は、クエリの結果のプロパティとして virtual を設定すべきではありませんか? そうではありませんし、schema.set("toObject", { virtuals: true }) もそうではありません。私はこれを正しく行っていますか?

4

3 に答える 3

70

呼び出しで使用JSON.stringifyしているため、 ではなく、モデル インスタンスでメソッドconsole.logを呼び出します。toJSONtoObject

したがってJSON.stringify、呼び出しでを省略します。

console.log(results[0]);

または、toJSON現在オプションを設定しているように、スキーマにオプションを設定しtoObjectます。

...
{
    toObject: { virtuals: true },
    toJSON: { virtuals: true }
});
于 2012-10-31T00:27:17.327 に答える
2

私の間違いは、クエリに必要なフィールドを含めていませんでした。それらが投影で選択されていない場合、マングースは仮想フィールドを結合/計算する方法を知りません。

于 2019-06-19T12:24:21.610 に答える