使用Mongoose读取MongoDB水果集合名称时显示Undefined问题
问题解决:读取MongoDB水果名称输出Undefined
你的问题出在Fruit.find()的回调逻辑里:
fruits.forEach(function (fruit) { console.log(fruits.name); // 错误访问了数组fruits的name属性 })
fruits是查询返回的水果对象数组,数组本身没有name属性,而forEach的参数fruit才是数组里的单个水果文档,应该访问fruit.name。
修正后的代码片段:
Fruit.find() .then(function (fruits) { fruits.forEach(function (fruit) { console.log(fruit.name); // 改为fruit.name }) }) .catch(function (err) { console.log(err); });
额外补充两个注意点:
- 你的
main函数是异步的,但Fruit.find()没有等待数据库连接完成就执行,可能偶尔出现连接未就绪的问题。建议把查询逻辑移到main函数内,确保连接成功后再执行查询:
async function main() { await mongoose.connect('mongodb://127.0.0.1:27017/Fruitsdb'); console.log('Database connected'); // 查询逻辑移至此处 Fruit.find() .then(function (fruits) { fruits.forEach(function (fruit) { console.log(fruit.name); }) }) .catch(function (err) { console.log(err); }); }
- 你创建的
kiwi、orange的rating值超出了schema定义的max限制(max:5),如果后续启用insertMany会触发验证错误,需要将rating值调整到1-5区间内。
内容的提问来源于stack exchange,提问作者Varad Patil
相关产品推荐
相关产品推荐

