我想访问name属性。我尝试执行以下操作,但它返回了undefined
:
Category.find()
.select("-_id")
.select("-__v")
.then((categories) => {
let creator = req.userId;
console.log(categories.name) //undefined
if (categories.creator === creator && categories.name === categoryName) {
note
.save()
这是console.log(categories)
:
[
{ name: 'test11', creator: new ObjectId("6359766eaf27f731e789f061") },
{ name: 'test11', creator: new ObjectId("6359766eaf27f731e789f061") },
{ name: 'categ1', creator: new ObjectId("635a316453d25ea50a3a4c5c") },
{ name: 'categ1', creator: new ObjectId("635a316453d25ea50a3a4c5c") },
{ name: 'categ1', creator: new ObjectId("635a316453d25ea50a3a4c5c") },
{ name: 'categ1', creator: new ObjectId("635a316453d25ea50a3a4c5c") },
{ name: 'categ1', creator: new ObjectId("635a316453d25ea50a3a4c5c") },
{
name: 'newCategName',
creator: new ObjectId("635a316453d25ea50a3a4c5c")
}
]
我想检查当前登录用户的ID和文档名是否与Category架构中的一对完全匹配
2条答案
按热度按时间bz4sfanl1#
这里的Categories是一个对象数组,其中包含name和ObjectId。
所以只要循环遍历数组就可以得到你想要的结果。在代码中我看到你是这样做的:
请尝试:
zujrkrfu2#
因为返回的类别是一个对象列表而不是单个对象。您可以使用
Array.find()
来筛选条件。尽管基于用例的更好和更有效的方法是直接在查询本身中使用筛选条件,而不是获取所有类别然后进行筛选。
使用
findOne()
和第二个参数投影来获得匹配类别。