Mongoose返回Mongo对象,但不能访问它的属性

在我简单的Node / Mongo / Mongoose设置中,我有一个函数调用服务器来查看当前使用的最高ID,并返回下一个ID。 这个函数作为一个callback函数来创build一个新的Game

奇怪: logger.log出现在输出下面

 result { _id: 555d83d5bb0d4e3c352d896f, gameId: 'NaN' } 

但是当我改变logging器

 logger.log("result", result.gameId); 

输出是

 result { _id: 555d83d5bb0d4e3c352d896f, gameId: 'NaN' } 

这是没有意义的。 显然,财产在那里!

这是我的代码

 var createGame = function(gameNickname, callback){ nextGameId(function(nextId){ var newgame = new models.Game({ "gameId": Number(nextId), "gameNickname": gameNickname }); newgame.save(function(result, game){ callback(result + nextId); }); }); }; var nextGameId = function(callback){ var games = models.Game.find({}, {gameId: 1}); games.sort('-gameId').limit(1) //get the highest number roundId and add 1 to it .exec(function (err, result) { if (err) logger.log(err); if (result === null){ callback(0); } else{ logger.log("result", result); callback(result.gameId); } }); }; 

我build议你使用自动增量mongoose插件,像这样的东西

 var mongoose = require('mongoose'); var autoIncrement = require('mongoose-auto-increment'); var connection = mongoose.createConnection("mongodb://localhost/db"); autoIncrement.initialize(connection); var GameSchema = { "gameId": {type: Number}, "gameNickname": {type: String} } GameSchema.plugin(autoIncrement.plugin, { model: 'Game', field: 'gameId' }); mongoose.model('Game', GameSchema); 

之后你可以用autoinc保存你的游戏,例如:

var Game = mongoose.model('Game');

 function createNewGame(nickname){ return new Game({gameNickname: nickname}).save(function(err, res){ console.log(res); //some code... }) } 

执行这个代码后,你应该像这样做:

 { _id: "555d83d5bb0d4e3c352d896f", gameNickname: "nickname", gameId: 1 }