gpt4 book ai didi

javascript - 在向用户呈现数据之前删除 JSON 内容/删除 JavaScript 对象属性

转载 作者:行者123 更新时间:2023-11-28 20:16:22 24 4
gpt4 key购买 nike

我遇到了问题,但不太确定为什么无法解决我的问题。

我有一个使用 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)" />

这是我 Controller 中的模糊功能

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

这是我的 Node/mongoose 代码,它包含在另一个项目中:

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

};

现在,当检查 Firebug 时,成功调用返回的内容(已找到匹配项)返回的对象仍然包含已删除的属性...我哪里出错了?

最佳答案

您正在尝试从 Mongoose 对象中删除,而不是从实际存储中删除。最简单的更改是:

 var returnObj =  results[0].toJSON();
delete returnObj.hashed_password;
delete returnObj.salt;
delete returnObj._id;

您还可以选择 ( documentation ) 您想要包含/排除的字段。

关于javascript - 在向用户呈现数据之前删除 JSON 内容/删除 JavaScript 对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19134473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com