我一直在搜索Sequelize文档和论坛以获取正确的语法,似乎我正在以正确的方式进行,但由于某种原因,密码字段仍在响应有效负载中返回...
以下链接显示了我正在使用的属性排除语法在Sequelize的版本3.11中添加:https://github.com/sequelize/sequelize/issues/4074
谁知道我在这里可能会缺少什么?下面是Create
方法和Insert
语句中的控制台日志。
Create
方法
async create(req, res) {
try {
let user = await User.create({
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: req.body.password
}, {
attributes: {
exclude: ['password']
}
});
console.log("USER: ", user);
res.status(201).send(user.toJSON());
}
catch (error) {
res.status(500).send(error)
};
}
控制台日志
执行(默认):INSERT INTO“Users”(“id”,“firstName”,“lastName”,“email”,“password”,“createdAt”,“updatedAt”)VALUES(DEFAULT,'James','Martineau' ,'test @ gmail.com','$ 2b $ 10 $ 7ANyHzs74OXYfXHuhalQ3ewaS4DDem1cHMprKaIa7gO434rlVLKp2','2019-02-28 15:18:15.856 +00:00','2019-02-28 15:18:15.856 +00:00' )退货*;
USER:User {dataValues:{id:6,firstName:'James',lastName:'Martineau',email:'[email protected]',密码:'$ 2b $ 10 $ 7ANyHzs74OXYfXHuhalQ3ewaS4DDem1cHMprKaIa7gO434rlVLKp2',更新时间:2019-02-28T15 :18:15.856Z,创作时间:2019-02-28T15:18:15.856Z} ...
我在document中看到,在创建模型时不能排除属性。仅在找到模型时排除。
我建议:
async create(req, res)
{
try {
let user = await User.create({
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: req.body.password
});
delete user["password"];//delete field password
console.log("USER: ", user);
res.status(201).send(user.toJSON());
}
catch (error) {
res.status(500).send(error)
};
}
通过快速阅读文档,似乎attributes
仅在以下查询中提及:
Model.findAll({
attributes: { exclude: ['baz'] }
});
(Qazxswpoi)
如果你想用http://docs.sequelizejs.com/manual/tutorial/querying.html#attributes排除password
,你可以这样做:
create
(Qazxswpoi)
let user = await User.create({
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: req.body.password
}, {
fields: ['firstName', 'lastName', 'email']
});