我正在做一个简单的插入流星集合,看起来工作,但让集合为空。
该集合在服务器上正确定义:
Meteor.publish("comments", function () {
return Comments.find();
});
在 client.js 中正确订阅:
Meteor.subscribe("commments");
并在 model.js 上正确设置:
Comments = new Meteor.Collection("comments");
插入代码如下:
Meteor.methods({
addComment: function (options) {
check(options.post_id, String);
check(options.comment, NonEmptyString);
if (! this.userId)
throw new Meteor.Error(403, "You must be logged in to comment.");
if (options.comment.length > 1000)
throw new Meteor.Error(413, "Comment is too long");
var post = Posts.findOne(options.post_id);
if (! post)
throw new Meteor.Error(404, "No such post");
// add new comment
var timestamp = (new Date()).getTime();
console.log('Comment: ' + options.comment);
console.log('Post: ' + options.post_id);
console.log('UserId: ' + this.userId);
var saved = Comments.insert({
owner: this.userId,
post_id: options.post_id,
timestamp: timestamp,
text: options.comment});
console.log('Saved: ' + saved);
}
});
调用插入后,控制台会打印出以下内容:
Comment: Something
Post: xRjqaBBEMa6qjGnDm
UserId: SCz9e6zrpcQrKXYWX
Saved: FCxww9GsrDsjFQAGF
> Comments.find().count()
0
我已经插入到其他几个工作正常的集合中(帖子就是其中之一,您可以在代码中看到帖子 ID)。在文档中,ist 说如果插入错误,它将打印到控制台,但正如您所见,它似乎正在工作,但实际上是空的。
谢谢。
更新:我确实发现数据正在被放入数据库,但由于某种原因没有显示出来。我不确定为什么数据没有正确发布,因为 find() 上没有过滤器。