データベースに保存されていない、応答専用の一時的なプロパティを mongoose オブジェクトに追加するにはどうすればよいですか? 質問する

データベースに保存されていない、応答専用の一時的なプロパティを mongoose オブジェクトに追加するにはどうすればよいですか? 質問する

いくつかの追加の一時プロパティに追加データを入力して、レスポンスに返送したいと思います。

'use strict';

var mongoose = require('mongoose');
var express = require('express');
var app = express();

var TournamentSchema = new mongoose.Schema({
    createdAt: { type: Date, default: Date.now },
    deadlineAt: { type: Date }
});

var Tournament = mongoose.model('Tournament', TournamentSchema);

app.get('/', function(req, res) {
    var tournament = new Tournament();

    // Adding properties like this 'on-the-fly' doesnt seem to work
    // How can I do this ?
    tournament['friends'] = ['Friend1, Friend2'];
    tournament.state = 'NOOB';
    tournament.score = 5;
    console.log(tournament);
    res.send(tournament);
});

var server = app.listen(3000, function() {
    console.log('Listening on port %d', server.address().port);
});

ただし、プロパティは Tournament オブジェクトには追加されないため、応答には追加されません。

ベストアンサー1

答えはここに見つかりました:js オブジェクトにプロパティを追加できません

.toJSON()Mongoose オブジェクトにプロパティを追加できないため、またはメソッドを使用してプレーンな JSON オブジェクトに変換する必要があります.toObject()

編集:また、@Zlatko が述べているように、.lean() メソッドを使用してクエリを確定することもできます。

mongooseModel.find().lean().exec()

...ネイティブ js オブジェクトも生成します。

おすすめ記事