[英]Mongo collection undefined on Meteor front-end
我的前端有這段代碼,但PlayersList在瀏覽器中未定義:
//client/allowHelpers.js
Meteor.startup(function() {
PLayersList.allow({
insert: function (userId, doc) {
return true;
}
});
});
(在上面的代碼塊中未定義PlayersList var。)
但是它是在Meteor lib目錄中定義的,在該目錄中我有一個同時包含服務器/客戶端JavaScript的setup.js文件:
//lib/setup.js
PlayersList = new Mongo.Collection("PlayersList");
if(Meteor.isServer){
Meteor.publish('thePlayers', function(){
var currentUserId = this.userId;
return PlayersList.find({createdBy: currentUserId})
});
PlayersList.allow({
insert: function (userId, doc) {
return true;
}
});
PlayersList.before.update(function (userId, doc, fieldNames, modifier, options) {
console.log('about to insert:',userId,doc,fieldNames,modifier,options);
});
PlayersList.before.insert(function (userId, doc, fieldNames, modifier, options) {
console.log('about to insert:',userId,doc,fieldNames,modifier,options);
});
PlayersList.after.insert(function (userId, doc, fieldNames, modifier, options) {
console.log('just inserted:',userId,doc,fieldNames,modifier,options);
});
Meteor.methods({
sendLogMessage: function(msg){
console.log("Message from server:" + msg);
},
insertPlayerData: function(playerName){
var currentUserId = Meteor.userId();
PlayersList.insert({
name: playerName,
score: 0,
createdBy: currentUserId
});
},
removePlayerData: function(selectedPlayer){
PlayersList.remove(selectedPlayer);
}
});
}
if(Meteor.isClient){
Meteor.subscribe('thePlayers');
Meteor.subscribe("PlayersList");
}
有什么可能是錯的嗎?
您在客戶端具有允許,只需將允許移至服務器代碼即可。
PLayersList.allow({
insert: function (userId, doc) {
return true;
}
});
注意:
在這種情況下,您將使用meteor.method進行插入
PlayersList.insert({
name: playerName,
score: 0,
createdBy: currentUserId
});
您需要知道Meteor.methods跳過了allow / deny(忽略了它們),因此這里沒有理由擁有allows(如果您僅使用此PlayerLists.insert)
因此,只需刪除客戶端代碼中的allow。
或將其移至服務器端。
如果您對使用Allows/deny
或server methods
有疑問,請查看@david Weldon的出色回答 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.