【发布时间】:2015-07-23 06:12:52
【问题描述】:
我正在尝试编写一个应用程序来作为学习工具进行实时消息传递。在过去的 4 个半小时里,我一直在谷歌搜索,试图弄清楚为什么我的插入方法不起作用。它不会抛出任何错误,只是不执行实际的插入操作。
这是它的代码: JS客户端:
Template.input.events({
"keypress .input": function(event, template){
if(event.which == 13){
event.preventDefault();
var user = Meteor.user();
var message = template.find(".input").value;
alert(Meteor.call("insert", user.username, message));
template.find(".input").value = "";
}
}
});
JS 服务器:
Meteor.methods({
'insert':function(username, message){
Messages.insert({
'message': message,
'user': Meteor.userId(),
'username': username,
'timestamp': new Date()
});
return "success";
},
'find': function(){
Messages.find({}, {sort: {timestamp:-1}});
}
});
HTML:
<template name="input">
<div id="input">
<input class="input" type="text" placeholder="Message..." id="message" />
</div>
</template>
我已使用控制台确认没有添加任何内容。
【问题讨论】:
-
你还有自动发布和不安全的吗?可以从浏览器控制台插入吗?
-
您是从浏览器控制台还是直接从 Mongo(通过 shell 中的
meteor mongo)检查新消息文档是否存在?奇怪的是您的文档正在编写,但您没有发布和订阅消息集合。 -
我开启了自动发布,但我没有开启安全功能。当我尝试从开发者控制台插入时,提示插入失败,访问被拒绝
标签: javascript mongodb web-applications meteor insert