Các mục của Courses
Bộ sưu tập là những gì bạn đang xuất bản.
Vì vậy, khi bạn truy vấn với Courses.find({"canEditCourse": { $in: [ this.userId ] } });
canEditCourse
là trường mà bạn đang cố gắng đối sánh với userId
(nghĩa đen của nó là tìm tất cả các Khóa học trong đó canEditCourse
mảng chứa userId.)
Tuy nhiên, tôi không hiểu tại sao bạn lại muốn sử dụng tên người dùng ở đây. Điều đó mang lại cho bạn điều gì?
Nếu bạn muốn làm điều này, thì bạn cần phải có canEditCourse
trường là một mảng username
chứ không phải userId
Điều đó có nghĩa là bạn cần thay đổi logic nơi các Khóa học được tạo hoặc chỉnh sửa và nơi trường này đang được điền.
Không chắc nó là giá trị rắc rối. Nếu những gì bạn muốn là tra cứu Khóa học theo tên người dùng, sau đó tra cứu Người dùng theo tên người dùng, lấy userId của anh ấy / cô ấy và tra cứu Khóa học theo userId.
Meteor.publish('editableCourses', function (username) {
var myUser = Meteor.users.findOne({'username': username});
return Courses.find({"canEditCourse": { $in: [ myUser._id ] } });
});