Ho provato a cercare una risposta dappertutto ma non riesco a farlo funzionare. Sto usando Meteor con Cordova per costruire un'app mobile.Meteor: Come dovrei aggiornare la collezione Users per includere un nuovo attributo nell'oggetto/dizionario?
Desidero aggiungere un attributo alla mia raccolta di utenti (quello che Meteor crea quando ho effettuato l'accesso). vale a dire. Ad esempio, desidero aggiungere {currentHotel: "Something"} alla mia raccolta db.Users.
Sto tentando di fare ciò nel modo corretto, Iscriviti - Iscriviti. L'uso di Meteor.methods è stato citato per non essere buono per le applicazioni in tempo reale. Ad ogni modo, voglio capire come aggiornare la collezione di utenti usando Publish - Subscribe.
//On the server, I did
Meteor.publish("userData", function() {
return Meteor.users.find({_id: this.userId},
{fields:{services: 1, currentHotel: 1}});
});
Quindi il campo correnteHotel dovrebbe essere accessibile al lato client. Ora per aggiornare il campo "currentHotel":
//On the client I do
Meteor.subscribe('userData');
var user = Meteor.users.findOne({"_id": Meteor.userId()});
Meteor.users.update({_id: user._id}, {$set:{currentHotel:'something'}});
//I tried this too
//Meteor.users.update({ _id: Meteor.userId() }, {$set: });
Sulla console del browser posso vedere "currentHotel" e "servizi" bene, che significa che il publish-subscribe funzionato. Eppure non riesco ad aggiornare l'attuale Hotel. Ricevo un accesso negato. Perchè è questo?
Inoltre, se la proprietà "currentHotel" non esisteva affatto nella raccolta, come posso aggiungerla utilizzando un annuncio-sottoscrizione simile? Posso pubblicare una proprietà che non è presente e consentire al cliente di iscriversi e aggiungere quella proprietà?
Ho fatto riferimento ai documenti Meteor, this, this e this, ma non riesco ancora a farlo funzionare! :-(
Grazie in anticipo
Sei il migliore! Grazie! Presumo che non sia necessario pubblicare nulla da aggiungere a questo oggetto profilo? Modifica: Ah, il profilo è pubblicato automaticamente! Grazie mille! –
Prego;) –
Grazie, anche a me è stato utile. Solo una nota, ho ricevuto un errore cercando di aggiornare in questo modo e ho dovuto indicare _id con '{_id: Meteor.userId()}' come suggerito [in questa altra domanda] (http://stackoverflow.com/ un/23705715/3,961519 millions). – Diego