我遇到了問題,但我不太清楚爲什麼我無法解決我的問題。在向用戶呈現數據之前刪除JSON內容/刪除JavaScript對象屬性
我有一個使用AngularJS,Node.JS和MongoDB(Mongoose)構建的SPA。現在在客戶端我有一個表單來註冊一個新用戶。該表單具有文本輸入,其功能與其onblur
事件(或準確地說ng-blur
)相關聯。該函數發送一個Ajax/$http
呼叫到後端,在提交表單之前檢查用戶名是否唯一。一切運作良好,這裏是我的代碼迄今(請注意,我稍微修改了代碼,這個問題)...
這裏的文本框,
<input type="text" name="displayName" id="displayName" ng-model="user.displayName" ng-blur="checkUserName(user)" />
這裏是我的控制器中的模糊函數
this.userNameCheck = function(user){
return $http({method: 'GET', url: '/api/users/displayName/' + user.displayName})
.then(function(response) {
if(response.data.length > 0){
user.userWarning = userWarning; // userWarning is a string/ var that is passed to the form
}
}, function(response) {
console.log(response);
});
};
這裏是包含在不同項目中我的節點/貓鼬代碼:
exports.displayName = function (req, res, next, displayName) {
User.find({displayName : displayName}).limit(1).exec(function (err, results) {
if (err) return next(err);
if (!results) return next(new Error('No user found'));
res.jsonp(results || null);
});
};
所有這些很棒,但是當我檢查控制檯時,我可以看到,當我們有一個匹配時,返回的結果對象包含像哈希密碼,鹽等等的一切...我想要阻止這些返回在我的目的。所以,我這樣修改了我的後端代碼:螢火蟲是什麼一個成功的調用(一個發現匹配)返回的對象仍然包含已刪除屬性返回檢查時
exports.displayName = function (req, res, next, displayName) {
User.find({displayName : displayName}).limit(1).exec(function (err, results) {
if (err) return next(err);
if (!results) return next(new Error('No user found'));
// new code
if(results.length !== 0){
var returnObj = results[0];
delete returnObj.hashed_password;
delete returnObj.salt;
delete returnObj._id;
res.jsonp([returnObj] || null)
}else{
res.jsonp(results || null);
}
});
};
現在...我要去哪裏錯了?
無法解決實際問題,但請注意,res.jsonp([returnObj] || null)的'null'部分將永遠不會被使用。該行等同於'res.jsonp([returnObj])'。數組從不虛僞。 –