我搞不懂我为什么会犯这个错误。我创造了一个流星方法。也许我只是需要第二双眼睛来指出我的错误。我正在创建一个即时通讯应用,在线用户可以进行一对一的聊天。一旦我点击在线用户(路由)。控制台立即有一个
插入失败:访问被拒绝。
如果我试图发送一条消息,这就是我收到的错误。
j…y.Event {originalEvent: originalEvent,类型:"submit",timeStamp: 1455207989065,jQuery1112075371492956765: true,其中:未定义的…} meteor.js:862插入失败:访问拒绝meteor.js:862更新失败:访问拒绝17799meteor.js:862插入失败:访问被拒绝
我对Meteor非常陌生,任何帮助或建议都将不胜感激。
这是我的HTML
<template name="chat_page">
<h2>Type in the box below to send a message!</h2>
<div class="row">
<div class="col-md-12">
<div class="well well-lg">
{{#each messages}}
{{> chat_message}}
{{/each}}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<form class="js-send-chat">
<input class="input" type="text" name="chat" placeholder="type a message here...">
<button class="btn btn-default">send</button>
</form>
</div>
</div>
</template>
<!-- simple template that displays a message -->
<template name="chat_message">
<div class = "container">
<div class = "row">
<img src="/{{profile.avatar}}" class="avatar_img">
{{username}} said: {{text}}
</div>
</div>
<br>
</template>客户端
Template.chat_page.helpers({
messages:function(){
var chat = Chats.findOne({_id:Session.get("chatId")});
return chat.messages;
},
other_user:function(){
return ""
},
});
Template.chat_page.events({
'submit .js-send-chat':function(event){
console.log(event);
event.preventDefault();
var chat = Chats.findOne({_id:Session.get("chatId")});
if (chat){
var msgs = chat.messages;
if (!msgs){
msgs = [];
}
msgs.push({text: event.target.chat.value});
event.target.chat.value = "";
chat.messages = msgs;
Chats.update(chat._id, chat);
Meteor.call("sendMessage", chat);
}
}
})方法
Meteor.methods({
sendMessage: function (chat) {
Chats.insert({
chat: chat,
createdAt: new Date(),
username: Meteor.user().profile.username,
avatar: Meteor.user().profile.avatar,
});
},
});发布于 2016-02-11 16:50:29
你还有不安全的自动包装吗?
Chats.update(chat._id, chat);我觉得这部分有点奇怪。集合的基本更新是: Chats.update({_id : chat._id}、{$set:{message : whateverMymsgis });Meteor对update方法有一定的严格要求,您总是需要传递_id才能更新某些内容。
如果您没有自动生成的和不安全的包,那么是否已经将所有允许/发布/归属部分都添加到集合中了??
希望能有所帮助:)
发布于 2016-02-11 16:58:21
之所以发生这种情况,是因为您删除了insecure包,没有为您的chat集合指定任何allow/deny,并且您的流星方法也写在了client端。
快速而正确的解决办法是将流星方法移到server side上。
https://stackoverflow.com/questions/35344790
复制相似问题