如何在一个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); }); 

但是这些属性不会被添加到锦标赛对象中,因此不会在响应中。

       

网上收集的解决方案 "如何在一个mongoose对象上添加临时属性,仅仅为了响应,而不是存储在数据库中"

在这里find答案: 无法将属性添加到js对象

我不能添加一个Mongoose对象的属性,我必须使用.toJSON().toObject()方法将其转换为普通的JSON对象。

编辑:像@ Zlatko提到的,你也可以使用.lean()方法来最终确定你的查询。

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

这也产生本地的js对象。