2016-07-29 46 views
0

我正在實現一個簡單的本地身份驗證與express和mongoDB(使用貓鼬),由於某種原因服務器發回一個空的響應對象的用戶,但令牌會在響應中發送。我在返回之前立即包含了一個console.log語句,以便稍微嘗試和調試它,並且在那裏記錄的對象與所有數據都是正確的。這就是創建代碼看起來像Express發送一個空的對象,但一個console.log正確顯示對象

import mongoose from 'mongoose'; 
import jwt from 'jsonwebtoken'; 
import json from '../helpers/json'; 

var User = mongoose.model('User'); 

module.exports = function() { 
    var obj = {}; 

    obj.create = function (req, res) { 
    var roles = ['authenticated']; 

    User.count({}, (err, len) => { 
     if (!len) { 
      roles.push('admin'); 
     } 

     var user = new User(req.body); 
     user.roles = roles; 
     user.provider = 'local'; 
     user.token = jwt.sign(user, global.config.secret, {expiresIn: 10800}); 
     user.save((err, user) => { 
      if (err) { 
       return json.bad(err, res); 
      } 

      json.good({ 
       record: user, 
       token: user.token 
      }, res); 
     }); 
    }); 
    }; 

    return obj; 
}; 

就像我說的,我已經包含了一個console.log語句,用戶將正確顯示。

如果你想知道,在json.good是我寫的,基本上是這樣的

module.exports = { 
    good: function (obj, res) { 
    res.send({ 
     success: 1, 
     res: obj 
    }); 
    }, 

    bad: function (err, res) { 
    var obj = { 
     success: 0, 
     res: err 
    }; 

    if (obj.res.errors) { 
     obj.res.messages = []; 

     for (var i in obj.res.errors) { 
      obj.res.messages.push(obj.res.errors[i].message; 
     } 

     obj.res.messages = obj.res.messages[0]; 

    } 

    res.send(obj); 

    } 
}; 

我也讓我的快遞文件的正確頭和方法的輔助功能。此代碼與我以前使用過的代碼完全相同,但我錯過了一些看起來像的東西。

任何幫助將不勝感激,謝謝!

!!!!!!!固定不動的固定!

我想出了問題,這是在我的模型。我有

UserSchema.methods = { 
    toJSON: function() { 
     var obj = this.toObject(); 
     delete obj.password; 
     delete obj.following; 
    } 
}; 

我忘記了在最後返回obj。感謝大家!

回答

0

確保MongoDB中的值類型與變量類型匹配... 因此,如果您有一個名爲'fav'的Key是Int32,那麼請確保您用來查找它的變量是Int32。

+0

雖然我明白你在說什麼,但我沒有看到它在這裏如何應用。我創建的新用戶對象可正確保存正確保存在數據庫中的字符串值(用戶名,電子郵件,密碼,令牌等等)。當我發送這個對象之前console.log,我得到正確的用戶對象,因爲它出現在數據庫中;但是,當我將對象發送給客戶端時,它將作爲空對象發送。我可能只是沒有理解你所說的含義,所以如果你覺得請解釋更多,希望我能解決這個 – bashkir

+0

沒關係!它已經解決了!謝謝 – bashkir

相關問題