我有以下用例:
- 我在后端的 MongoDB 中有一个用户表,它是与前端不同的服务。我使用 DDP.connect() 连接到这个后端服务。
- 每个用户都有一组“主题”
users 表中的每个主题都由 id 引用,而不是 name。有一个名为“subjects”的单独表,它按 id 保存主题。
我想将用户发布到客户端,但是我希望发布的用户首先填充主题。
受这篇博文的启发,我尝试了以下方法:
// in the backend service on port 3030
Meteor.publish('users', function(userId) {
var _this = this;
Meteor.users.find({
_id: userId
}).forEach(function(user) {
user.profile = populate(user.profile);
console.log(user);
_this.changed('users', userId, {
_id: userId,
profile: user.profile
});
});
_this.ready();
});
// in the client
var UserService = DDP.connect('http://localhost:3030');
var UserServiceProfile = UserService.subscribe('users', Meteor.userId());
console.log(UserServiceProfile);
这会在后端产生以下错误:
Exception from sub users id akuWx5TqsrArFnQBZ Error: Could not find element with id XhQu77F5ChjcMTSPr to change
.
所以我尝试更改_this.changed
为_this.added
. 我没有收到任何错误,但是客户端 minimongo 中没有显示更改,即使我可以看到该populate
功能通过该console.log(user)
行工作。