Ich habe ein kleines Problem beim Versuch, Mongos mit Mongoose abzufragen. Hier ist eine Probe von meinem Code:Mongoose zurückkehrende Zeichenfolge anstelle von Objekt
...
resolve: (root, params) => {
var user = User.findOne({email: params.data.email}).exec()
return user;
}
...
Dies gibt die folgende:
{
"data": {
"login": "{ _id: 596f4cc4f51fa12bf0f5a001,\n updatedAt: 2017-07-19T12:12:52.736Z,\n createdAt: 2017-07-19T12:12:52.736Z,\n email: '[email protected]',\n password: '$2a$12$bhPG4TPGR6by/UBTeAnzq.lyxhfMAJnBymDbkFDIHWl5.XF2JG62O',\n __v: 0 }"
} }
Ich habe keine Ahnung, warum dies geschieht. Jede Hilfe wäre willkommen.
EDIT
Hier ist der vollständige Code:
var bcrypt = require('bcryptjs');
var _ = require('lodash');
var { GraphQLNonNull, GraphQLString } = require('graphql');
var jwt = require('jsonwebtoken');
var { UserInputType } = require('./UserSchema');
var User = require('./UserModel');
var login = {
type: new GraphQLNonNull(GraphQLString),
args: {
data: {
name: 'Data',
type: new GraphQLNonNull(UserInputType)
}
},
resolve: (root, params, { SECRET }) => {
var user = User.findOne({email: params.data.email}).exec();
var authorized = bcrypt.compareSync(params.data.password, user.password);
if (!authorized) throw new Error('Invalid password');
var token = jwt.sign({
user: _.pick(user, ['_id', 'name'])
}, SECRET, {expiresIn: '1y'});
return token;
}
};
Diese Funktion gibt nur ein Versprechen zurück. Es gibt offensichtlich einige Änderungen an den Daten in der Auflösungsfunktion des Versprechens ... –
Scheinbar tritt es nur in diesem spezifischen Teil des Codes auf. Ich habe irgendwo etwas ähnlichen Code, der ein Objekt wie erwartet zurückgibt. – m8r1x