javascript - Mongoose 返回 Mongo 对象,但无法访问其属性

标签 javascript json node.js mongoose

在我简单的 Node/Mongo/Mongoose 设置中,我有一个函数调用服务器来查看我当前使用的最高 ID 是什么,并返回下一个 ID。此函数将创建新游戏的功能作为回调。

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

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

但是当我将记录器更改为

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);
        }
    });
};

最佳答案

我建议你使用自动增量 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('游戏');

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

执行此代码后,您应该得到如下内容:

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

关于javascript - Mongoose 返回 Mongo 对象,但无法访问其属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30366955/

相关文章:

javascript - 仅当主体具有特定类别时才启动放大弹出窗口

javascript - 单击返回到 Reactjs 中的先前状态或触发功能

json - 当我尝试从 R 中的 JSON 文件中提取数据时出现问题

javascript - 如何在 Joi 中捕获验证失败的回调

javascript - 隐藏下拉列表后,单击时再次显示它?

javascript - React中如何在函数中调用函数(auth、路由)

node.js - 连接处于关闭状态时无法添加新命令

node.js - 我应该在 package.json 中为 'types' 字段使用什么值?

javascript - 用于具有不同端点的嵌套 api 资源的 AngularJs ngResource

php - 在 PHP 中过滤多维数组