Sto facendo un semplice inserimento in una raccolta di meteore che sembra funzionare, ma lascia vuota la raccolta.L'inserimento di Meteora nella raccolta sembra funzionare, ma rimane vuoto
La collezione è definito correttamente sul server:
Meteor.publish("comments", function() {
return Comments.find();
});
Sottoscritto a correttamente nelle Client.js:
Meteor.subscribe("commments");
e impostare correttamente sulle model.js:
Comments = new Meteor.Collection("comments");
Il codice di inserimento è il seguente:
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);
}
});
Una volta che l'inserto è chiamato, le stampe console il seguente:
Comment: Something
Post: xRjqaBBEMa6qjGnDm
UserId: SCz9e6zrpcQrKXYWX
Saved: FCxww9GsrDsjFQAGF
> Comments.find().count()
0
ho inserti in diverse altre collezioni che funzionano bene (Messaggi essere uno di loro, come si può vedere l'ID Share il codice). Nel docs ist ha detto che se l'inserto errori fuori stamperà sulla console, ma come puoi vedere sembra funzionare, ma in realtà è vuoto.
Grazie.
AGGIORNAMENTO: ho trovato che i dati vengono inseriti nel database, ma per qualche motivo non vengono visualizzati. Non sono sicuro del motivo per cui i dati non vengono pubblicati correttamente poiché non ci sono filtri sul find().
Ho controllato il mio codice e ho dimenticato di notare che ho l'abbonamento Meteor nel mio model.js. Ho i commenti = new Meteor.Collection ("commenti"); nella pagina principale, ma ho anche lo stesso per le collezioni Post e Sezione e funzionano come previsto. Ho controllato e sono nel database. Qualche altra idea del perché potrebbero non mostrare? – Erick
'Meteor.subscribe (...)' dovrebbe essere nel tuo codice cliente, non condiviso ... Forse aggiornare il codice nella tua domanda? Dovrebbe essere molto facile localizzare il bug se potessi vedere dove si trova :) – emgee
Il mio errore (ho ancora bisogno del mio caffè del mattino). Meteor.subscribe() è sul client, non sul modello. Commenti = new Meteor.Collection ("commenti"); è nel file model.js. – Erick