流星集合'客戶'是收集'項目'的父母 項目中的外鍵是'client_id'。流星集合變換檢查其他集合,奇怪的行爲
現在我想讓客戶名稱擴展Projects集合。如果沒有Client-parent,則將客戶名稱設爲'XXX'。 (易見 '孤兒' 項目:只要看看那些XXX爲客戶名稱)
流星代碼如下:
collections.js
Client = new Mongo.Collection('clients');
Project = new Mongo.Collection('projects', {
transform: function (doc) {
var client = Client.findOne({"_id":doc.client_id},{"_id":0, "name":1});
if (!client) {
// Client name is 'XXX'
return _.extend(doc, {"client_name":"XXX"});
} else {
return _.extend(doc, {"client_name":client.name});
}
}
}
);
publications.js
Meteor.publish('clientNewYork', function() {
// This publication only New York clients, and only the name.
return Client.find({"city":"New York"}, {fields: {"name": 1}}, {sort: name: -1});
});
Meteor.publish('projects', function() {
return Project.find();
});
蘇bscriptions.js
Meteor.subscribe('clientNewYork');
Meteor.subscribe('projects');
應用開始於第一次訂閱:在紐約的所有客戶機的列表。 下一個屏幕是所有項目,充實客戶名稱。 重要提示:所有項目,不僅來自紐約客戶。
奇怪的事情發生了:
不在紐約所有客戶的項目獲得「XXX」作爲客戶端名稱。 這意味着在收集的變換中會考慮到該出版物。
我懷疑:
非紐約的客戶只是沒有在MiniMongo在我的瀏覽器。 但我期望collection.js會轉到服務器上運行的數據庫,而不是瀏覽器上的minimongo。
解決方法:
更改客戶端pubication到所有客戶端,而不是隻有紐約的。 但我的感覺說這不好。
我在這裏做錯了什麼?