【发布时间】:2017-11-22 22:23:19
【问题描述】:
今天我完成了我网站的功能部分,所以我进入了开发的安全我的应用程序部分。我只想向用户提供与他们相关的内容,因此,对于我的老师(= 具有 user.role == "teacher" 的用户),我只想让他们访问给定的作业,如果他们的 _id 在_ids 的 assignment.teachersList 数组。我想在发布时进行此验证,因此我必须在查询末尾获得一个光标。
看了 OFFICIAL documentation of mongo 之后,似乎做我想做的事情应该很简单:
// in a publish
Assignements.find({ teachersList: this.userId });
但是,这总是返回错误。首先,害怕 this 上下文问题,我尝试了类似的方法:
// in a publish
let self = this;
Assignements.find({ teachersList: self.userId });
这并没有更好,我仍然一无所获。我尝试使用 Cursor.map() 并将我的条件放在那里,但由于地图没有返回光标,我得到了数据,但它也不起作用,因为我们正在发布中。
文档中写到我的第一次尝试应该可以工作,所以毫无疑问我做错了什么,但是什么..? 现在我开始怀疑问题是否出自 _ids 数组这一事实。现在,它只是一个字符串数组。而且似乎方法中的 this.userId 只返回一个字符串......但也许我错了,我应该使用 Meteor.Mongo.ObjectId(the_string_id)而是对象?
好的,就是这样!请,如果您知道为什么这么简单的查询不起作用,请告诉我!谢谢:)
【问题讨论】: