我遇到了一个问题,我的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)的相同记录的屏幕截图
任何帮助将不胜感激。我已经尝试重命名列,更改模式中的顺序,并多次重新导入记录,但没有运气。
答案 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)
})
};