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 ] } });
});