Ich bin neu zu versprechen und ich versuche, den Wert eines Versprechens wie Mungo wiederzugeben, aber mit Mongoskin und Bluebird. Dies funktioniert mit Mungo return User.find().then(users => users)
. Dies wird eine Liste von Benutzern zurückgeben, die in Apollo-Server-Resolvern kein Versprechen darstellen.Rückgabewert des Versprechens
Ich habe versucht, Generator und asynchronen Versprechen, aber ohne Glück. Von dem, was ich gelesen habe, gibt ein Versprechen immer ein Versprechen zurück, also keine Ahnung, wie Mungo einen Wert zurückgibt.
mongodb.js
import Promise from 'bluebird';
import mongoskin from 'mongoskin';
Object.keys(mongoskin).forEach(function (key) {
var value = mongoskin[key];
if (typeof value === 'function') {
Promise.promisifyAll(value);
Promise.promisifyAll(value.prototype);
}
});
Promise.promisifyAll(mongoskin);
export default {
connect (uri) {
return mongoskin.db(uri, {native_parser:true});
}
};
users.js
import mongodb from '../../databases/mongodb';
export default class User {
constructor() {
this.db = mongodb.connect('mongodb://127.0.0.1:27017/test', {native_parser:true});
this.collection = this.db.collection('users');
}
find (query = {}, options = {}) {
const findAsync =() => {
return Promise.resolve().then(() => {
return this.collection.findAsync(query, options);
})
.then((xx) => {
xx.toArray((err, items) => {
if (err) return err;
return items;
});
});
};
async function getData() {
let foo = await findAsync();
return foo;
}
return getData();
}
}
const user = new User();
function bar() {
return user.find().then(x => console.log(x));
}
console.log(bar());
'User.find(). Then (users => users)' _does_ gibt ein Versprechen zurück. – robertklep
Das könnte etwas mit der Tatsache sein, dass ich es mit Apollo-Server verwende. Ich werde die Frage bearbeiten – otissv