我可以在我的数据库中找到一个文档。致电:
subject = await Subject.find({ name: 'Math' });
res.send(subject);
正确返回文档:
{
"topics": [],
"_id": "5ab71fe102863b28e8fd1a3a",
"name": "Math",
"__v": 0
}
问题是当我尝试访问subject
的属性时。以下任何调用都不会返回任何内容:
res.send(subject._id);
res.send(subject.name);
我已尝试subject.toObject()
和subject.toArray()
,但收到错误消息:
(node:2068) UnhandledPromiseRejectionWarning: TypeError: subject.toObject is not a function
任何帮助将不胜感激。谢谢!
NB:
在res.send(subject)
之前,我调用console.log(subject)
,输出为:
[ { topics: [],
_id: 5ab71fe102863b28e8fd1a3a,
name: 'cocei5',
__v: 0 } ]
答案 0 :(得分:0)
这是因为MongoDB中的find方法总是返回一个数组。
subject[0].propertyName
所以在上面的行中res.send(subject[0]._id);
返回一个数组。您存储在主题变量中。如果您只从DB获取单个对象,则可以使用Worksheets("Sheet1").UsedRange.Clear
Worksheets("Sheet1").UsedRange.Calculate
来访问对象属性。
如果您只想发送一个ID,可以通过
进行file_stats('created_equal.txt')
lines 2
words 13
characters 72
答案 1 :(得分:0)
只要您确定结果始终位于第0个索引上,就可以始终使用es6解构功能来获取数组中返回的第一个元素。
const [subject] = await Subject.find({ name: 'Math' });
res.send(subject._id);
res.send(subject.name);
ref:Destructuring arrays and objects Details for find api
或者您可以使用 const subject = await Subject.findOne({name:'Math'});
res.send(subject._id);
res.send(subject.name);
作为findOne返回对象,而find返回对象数组。 参考:Details for findOne api