Я делаю простую вставку в коллекцию метеор, которая появляется, но оставляет пустую коллекцию.Метеорная вставка, похоже, работает, но остается пустой
Коллекция правильно определена на сервере:
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
У меня есть вставки в нескольких других коллекциях, которые работают просто отлично (сообщения являются одним из них, как вы можете увидеть идентификатор поста код). В документах сказано, что если ошибки вставки будут распечатываться на консоли, но, как вы видите, он работает, но на самом деле пуст.
Спасибо.
UPDATE: Я обнаружил, что данные помещаются в базу данных, но по какой-то причине не отображаются. Я не уверен, почему данные не публикуются должным образом, поскольку на find() нет фильтров.
Я проверил свой код, и я забыл отметить, что у меня есть Meteor.subscribe в моей model.js. У меня есть Комментарии = новый Meteor.Collection («комментарии»); на главной странице, но у меня также есть то же самое для коллекций Post и Section, и они работают так, как ожидалось. Я проверил и они находятся в базе данных. Любая другая идея, почему они могут не показывать? – Erick
'Meteor.subscribe (...)' должен быть в вашем коде клиента, а не распространяться ... Возможно, обновите код в своем вопросе? Должна быть очень легко найти ошибку, если бы я мог видеть, где она находится :) – emgee
Моя ошибка (мне все еще нужен мой утренний кофе). Meteor.subscribe() находится на клиенте, а не на модели. Комментарии = новый Meteor.Collection («комментарии»); находится в файле model.js. – Erick