Mungo mit Bluebird promisifyAll - saveAsync auf modellobjekt Ergebnisse in einem Array als gelöst Versprechen Wert
Ich bin mit der bluebird ist promisifyAll mit Mungo. Wenn ich Anrufe, saveAsync (die promisified version speichern) auf ein Modell-Objekt, das gelöst Wert der abgeschlossenen Versprechen, ist ein array mit zwei Elementen. Die erste ist meine gespeicherte Modell-Objekt, das zweite den integer 1. Nicht sicher, was hier Los ist. Unten ist Beispielcode, um das Problem zu reproduzieren.
var mongoose = require("mongoose");
var Promise = require("bluebird");
Promise.promisifyAll(mongoose);
var PersonSchema = mongoose.Schema({
'name': String
});
var Person = mongoose.model('Person', PersonSchema);
mongoose.connect('mongodb://localhost/testmongoose');
var person = new Person({ name: "Joe Smith "});
person.saveAsync()
.then(function(savedPerson) {
//savedPerson will be an array.
//The first element is the saved instance of person
//The second element is the number 1
console.log(JSON.stringify(savedPerson));
})
.catch(function(err) {
console.log("There was an error");
})
Die Antwort, die ich bekommen, ist
[{"__v":0,"name":"Joe Smith ","_id":"5412338e201a0e1af750cf6f"},1]
Ich hatte erwartet, nur das erste Element in dem array, wie das mongoose Modell save () - Methode gibt ein einzelnes Objekt.
Jede Hilfe wäre sehr geschätzt werden!
InformationsquelleAutor winston smith | 2014-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warnung: Dieses Verhalten ändert sich, als der bluebird 3 - in-bluebird 3 die Standard-code in der Frage arbeiten, es sei denn, ein spezielles argument übergeben werden, um promisifyAll.
Die Signatur von
.save
's Rückruf:Da diese sich nicht an die node-callback-Konvention der Rücksendung einen Wert, bluebird wandelt die mehrwertige Antwort in ein array. Die Zahl stellt die Anzahl der Elemente erfolgt (1, wenn das Dokument gefunden wurde und aktualisiert in der DB).
Können Sie bekommen syntaktischen Zucker mit
.spread
:ich habe noch nie docs mehr nutzlos als mongoose docs.
Sie sind sicherlich ein wenig Abstrakt. gehen Sie zu Mungos gitter zu Fragen, die die Gemeinschaft im Fall, dass Sie nicht verstehen, die docs voll.
InformationsquelleAutor Benjamin Gruenbaum
Warum nicht einfach mit Mungo ' s built-in Versprechen, zu unterstützen?
Lesen Sie mehr darüber:
http://mongoosejs.com/docs/promises.html
Ich fand diesen thread bei der Suche nach einige details über Mungo Versprechen Unterstützung, so dass meine Antwort sollte hilfreich sein für andere ppl auch 🙂 Die aktuelle akzeptierte Antwort ist in der Tat irreführend.
Es ist nicht irreführend, es ist veraltet. Was geschieht mit Fragen und Antworten, die alt sind 🙂
Ja, die Frage ist, stillt veraltet, aber die Antwort nicht! 🙂
ich Sprach über die "akzeptierte Antwort". es ist irreführend, wenn Sie auf der Suche für Versprechen-Unterstützung und noch nicht wissen, dass mongoose bereits eine integrierte Unterstützung für das. Nevermind, ich bin raus 🙂
InformationsquelleAutor rckd