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