我的前端有此代码,但 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 会跳过允许/拒绝(忽略它们),因此没有理由在此处允许(如果您仅使用此 PlayerLists.insert)
所以只需删除客户端代码中的allow即可。
或者将其移动到服务器端。
看看这个 awesome answer如果您对使用允许/拒绝
或服务器方法
关于javascript - Mongo 集合在 Meteor 前端未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28470752/