我有一個存儲userId的消息中的消息列表。
Messages = new Mongo.Collection('messages');
// example of message data:
{
authorId: 'XFdsafddfs1sfd', // corresponding to a Meteor.userId
content: 'some Message'
}
而我發佈消息和現有的用戶。
Meteor.publish('messages', function() {
return Messages.find({});
});
Meteor.publish('users', function() {
return Meteor.users.find({});
});
目前我可以抓取消息列表並添加基於userIds的用戶名。由於用戶可以更改其用戶名&配置文件信息,因此向用戶數據添加用戶數據(僅userIds)沒有任何意義。
var messages = Messages.find({}).fetch();
var messages.forEach(function(message) {
message.username = Meteor.users.find(message.authorId).fetch() [0].username; // ugly
});
此代碼有效,但涉及大量浪費的調用。我想知道如何以更好的方式實現這一點。
在流星中,什麼是最有效的&最簡潔的方式來將用戶數據與包含userIds的集合配對?
您是否可以控制消息的創建方式或讀取現有的mongo數據庫? – sergserg
你看過這個嗎?可能對你有意思。 https://www.discovermeteor.com/blog/reactive-joins-in-meteor/ – tomsp
我有控制數據庫。 @tomsp我會看看,謝謝! – shmck