Mongoose模型不识别所有属性

时间:2018-02-10 17:43:44

标签: node.js mongodb express mongoose

我遇到了一个问题,我的mongoose模型似乎无法识别与数据库中的数据水合时分配给它的所有属性。我只是想尝试访问" make"我从CSV导入的对象的属性。

型号:

const mongoose = require('mongoose');
const productSchema = new mongoose.Schema({
  model: String,
  make: String,
  keyType: String,
  years: String,
  rsType: String,
  activeRemotesFobs: String,
  partNumber: String,
  cost: String
})
const Product = mongoose.model('Product', productSchema);
module.exports = Product;

查询以获取所有行:

exports.index = (req, res) => {
  Product.find({}, function(err, products){
    console.log(products[0])
    console.log(products[0].make)
    res.json(products)
  })
};

该查询的输出:

{ _id: 5a7f2bf4dd2ee45983440017,
'make': 'TOYOTA',
model: 'RAV4',
keyType: 'STEEL (G/H) KEY',
years: '2011-2018',
rsType: 'RS ONLY W/FACT. REMOTES + APP',
activeRremotesFobs: 'FACT. REMOTES ONLY & APP',
partNumber: 'FLRSBA/ASCL6',
cost: '$719' }
undefined

所以,显然有一些不同的关于' make',因为我无法访问该属性。所有其他物业都很容易到达。我使用mongoimport导入了这个,标题符合我的属性。这是使用robomongo(mongodb的GUI)的相同记录的屏幕截图

Record in robomongo

任何帮助将不胜感激。我已经尝试重命名列,更改模式中的顺序,并多次重新导入记录,但没有运气。

1 个答案:

答案 0 :(得分:1)

我也多次遇到这个问题,我找到了解决方法。您可以创建一个新对象并将其分配给查询结果(此处为products [0]),然后您可以访问第二个对象的所有属性。

exports.index = (req, res) => {
    Product.find({}, function(err, products){
    const Product2 = Object.assign({},products[0]);
    console.log(product2)
    console.log(product2._doc.make)
   res.json(products)
  })
};