我的前端有这个代码,但PlayersList在浏览器中未定义:
//客户/ 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");
}
可能出现什么问题?
答案 0 :(得分:1)
您在客户端有允许,只需将allow转移到服务器代码。
PLayersList.allow({
insert: function (userId, doc) {
return true;
}
});
注意:
在这种情况下,您使用meteor.method进行插入
PlayersList.insert({
name: playerName,
score: 0,
createdBy: currentUserId
});
你需要知道Meteor.methods跳过允许/拒绝(忽略它们),所以没有理由在这里允许(如果你只使用这个PlayerLists.insert)
所以只需删除客户端代码中的allow。
或将其移至服务器端。
如果您对使用Allows/deny
或server methods