gpt4 book ai didi

javascript - 删除 object.property 不适用于 Mongoose 创建的对象

转载 作者:行者123 更新时间:2023-12-03 08:04:53 25 4
gpt4 key购买 nike

我正在使用 Mongoose 在数据库中创建用户模型。当我将用户模型返回到浏览器时,我想删除某些字段,例如盐和密码哈希。

我正在使用 Javascript 删除关键字,但它并没有删除这些属性。

我写了两个例子。

示例 1(有效):使用 Salt 创建用户对象,删除 salt

describe('Manual User Object', function () {

it('should delete salt', function (done) {

// MANUALLY CREATE JAVASCRIPT OBJECT
var entity = { name: 'david', 'salt': 'yes please' };

l.kv('typeof entity', typeof entity);
l.kv('typeof entity.salt', typeof entity.salt);

l.line('before delete');
l.inspect(entity);
l.info();

l.line('delete entity.salt');
var isDeleted = delete entity.salt;
l.kv('Is Successful', isDeleted );
l.info();

l.line('after delete');
l.inspect(entity);

});

});

示例 2(不起作用):使用 Salt 在 Mongoose 中创建的用户对象

创建用户 Controller 函数

// ------------------------------------------------------------
// CREATE: Creates a new user in the DB.
// ------------------------------------------------------------
exports.create = function (req, res) {

//var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
//console.log(fullUrl);

try {

UserSchema.create(req.body.entity, function (err, entity) {

if (err) {
return mong.handleError(res, err);
}

// Fails to remove Salt
entity = santitise(entity);

return res.status(201).json(mong.formatSuccess(entity));
});

} catch (e) {
console.log(e);
}
};

单元测试失败 it('应该创建一个 ' + modelName, function (done) {

var payload = td.users.newEntity('David', 'david@test.com', 'orderer', 'password');

request(app)
.post('/api/users')
.send(mong.wrapEntity(payload))
.expect(201)
.expect('Content-Type', /json/)
.end(function (err, res) {

if (err) {
l.logTheUnknown(err);
return done(err);
}

var document = res.body;
var entity = document.entity;

l.logDocument(document);
logEntity(entity);

utest.expectSuccess(document);
utest.expectTimeStampsOnCreate(entity, modelName);

// Check properties are returned
entity.should.have.property('name', 'David');
entity.should.have.property('email', 'david@test.com');
entity.should.have.property('role', 'orderer');
entity.should.have.property('provider', 'local');

//entity.should.have.property('password', 'david@test.com');
//entity.should.not.have.property('hashedPassword');
entity.should.not.have.property('salt');

return done(err);
});

});

sanitizer 功能 //该实体来自 MONGOOSE.CREATE 功能 santitise(实体) {

  l.kv('typeof entity', typeof entity);
l.kv('typeof entity.salt', typeof entity.salt);

l.line('before delete');
l.inspect(entity);
l.info();

l.line('delete entity.salt');
var isDeleted = delete entity.salt;
l.kv('Is Successful', isDeleted);
l.info();

l.line('after delete');
l.inspect(entity);

return entity;
}

LOG

最佳答案

谢谢 JohnnyHK,

解决方案是将清理更改为以下内容:why-cant-i-delete-a-mongoose-models-object-properties

function sanitise(entity)
{
var result = entity.toObject();

delete result.hashedPassword;
delete result.salt;

return result;
}

关于javascript - 删除 object.property 不适用于 Mongoose 创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426410/

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