Mongoose不返回字段

问题描述 投票:0回答:2

我们有NodeJs后端应用程序,它与mongo数据库交互。 我有严格的模式来检索对象。 NodeJs应用程序使用module.export技术。

我使用以下依赖项:

"mongoose": "^4.7.8",
"promise": "^8.0.1",

我遵循架构:

account.js

const   mongoose = require('mongoose'),
        ColumnModel = require('./column');

var AccountModel = new mongoose.Schema({
    id: {
        type: Number,
        required: [true, "ID is required"],
        unique: true
    },
    maxAvailableDate: {
        type: Date,
        require: [true, "maxAvailableDate is required"]
    },
    types: {
        type: [String],
        required: [true, "Log types are required"]
    },
    metaInfo: {
        conversion: {
            type: [ColumnModel],
            required: [true, "Conversion columns are required"]
        },
        impression: {
            type: [ColumnModel],
            required: [true, "Impression columns are required"]
        },
        clickevent: {
            type: [ColumnModel],
            required: [true, "Clickevent columns are required"]
        }
    }
});

column.js

const   mongoose = require('mongoose');

module.exports = new mongoose.Schema({
    columnName: {
        type: String,
        required: true
    },
    columnType: {
        type: String,
        enum: [
            "string", 
            "date",
            "int",
            "real"
        ],
        required: true
    }
});

然后我使用模型:

const AccountModel = require('./account'),
      mongoose = require('mongoose');

let AccountModel = mongoose.model('Account', AccountModel);

AccountModel.findOne(
    {id: accountId},
    (err, result) => {
        let types = result.types;
        console.log(result);
    }
);

我得到了输出:

{ _id: 5a98116ff7f1e223e5b291fa,
  id: 119,
  maxAvailableDate: 2018-03-01T14:42:55.262Z,
  types: [ 'impression', 'conversion', 'clickevent' ],
  metaInfo: 
   { conversion: 
      [ [Object],
        [Object] ],
     impression: 
      [ [Object],
        [Object] ],
     clickevent: 
      [ [Object],
        [Object] ] } }

types未定义! 我知道我可以将lean()Query结合起来,但我需要可变的对象,而不仅仅是原始数据。

javascript node.js mongodb mongoose
2个回答
1
投票

您可以调用toObject方法来访问字段。

例:

var data = result.toObject();
console.log(data.types); // "[ 'impression', 'conversion', 'clickevent' ]"

参考:http://mongoosejs.com/docs/guide.html#toObject


0
投票

我发现了问题,我没有在accounts.js中使用module.export

© www.soinside.com 2019 - 2024. All rights reserved.