我想访问模型中文档数组的内容,但无法返回未定义。
这是我的模型(Project.js):
var mongoose = require('moongoose');
var Schema = mongoose.Schema;
var User = require("./Users");
var ProjectSchema = new Schema({
name: String,
description: String,
owner: {
type: mongoose.SchemaTypes.ObjectId,
ref: "User"
},
contributor: [{
type: mongoose.SchemaTypes.ObjectId,
ref: "User"
}]
});
module.exports = mongoose.model('Project', ProjectSchema);
和我的Api:
var Project = require('./Project')
await Project.find({owner: userId, name: name})
.then(project => {
console.log(project);
console.log(project.contributor);
}).catch(err => {
res.status(500).send({
message: err.message
});
});
当我尝试 console.log(project); 时,返回期望的输出,但在 console.log(project.contributor)中; 返回未定义
我也在网上搜索,但找不到正确的解决方案
感谢您的帮助:)
答案 0 :(得分:2)
由于您期望只找到一个项目,因此请使用findOne方法更改find。另一种情况是,您正在搜索多个项目,并且将收到一个数组而不是一个对象。
答案 1 :(得分:1)
您从Project.find()
(See)的输出将是数据库中的对象数组。
如果结果只有1个对象,则可以使用project[0].contributor
,因为project
是一个内部有1个对象的数组,其索引为0。
如果结果在数组中可能有很多对象,那么您应该遍历结果以分别获取每个数据。
project.forEach(p => console.log(p.contributor))