mongooseを使用してmongodbを照会しようとしているときに、多少の問題が発生しています。オブジェクトの代わりにマングースを返す
{
"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 }"
}}
私はなぜこれが起こっている見当がつかない:これは、以下の返し
...
resolve: (root, params) => {
var user = User.findOne({email: params.data.email}).exec()
return user;
}
...
: はここに私のコードのサンプルです。どんな助けもありがとう。ここで
EDIT
は完全なコードです:
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;
}
};
この関数は、約束を返すだけです。その約束の解決機能のデータには明らかにいくつかの変更が加えられています... –
それは明らかにコードのこの特定の部分でのみ発生します。私は、他の場所では、オブジェクトが期待どおりに返されるようなやや似たようなコードを持っています。 – m8r1x