2017-07-19 16 views
0

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; 
    } 
}; 

答えて

1

これは決意を呼び出し、このユーザ約束の.thenを呼び出す関数であるかもしれません。より多くのコードなしで確実に伝えることはできません...

+0

この関数は、約束を返すだけです。その約束の解決機能のデータには明らかにいくつかの変更が加えられています... –

+0

それは明らかにコードのこの特定の部分でのみ発生します。私は、他の場所では、オブジェクトが期待どおりに返されるようなやや似たようなコードを持っています。 – m8r1x

0
resolve: (root, params, { SECRET }) => { 
    return new Promise(resolve => { 
     User.findOne({email: params.data.email}).exec().then(user => { 
      bcrypt.compare(params.data.password, user.password, (err, authorized) => { 
       if (!authorized) throw new Error('Invalid password'); 
       var token = jwt.sign({ 
        user: _.pick(user, ['_id', 'name']) 
       }, SECRET, {expiresIn: '1y'}); 
       resolve(token); 
      }); 
     }); 
    }).then(token => token); 
} 

代わりにこれを行うと決定しました!私の問題を解決しました。助けてくれてありがとう。

関連する問題