gpt4 book ai didi

javascript - 使用 Sequelize Create 方法时如何仅返回特定属性

转载 作者:行者123 更新时间:2023-11-29 10:27:38 27 4
gpt4 key购买 nike

我一直在 Sequelize 文档和论坛中搜索正确的语法,看起来我的做法是正确的,但由于某种原因,密码字段仍在响应负载中返回...

以下链接显示我正在使用的属性排除语法是在 Sequelize 的 3.11 版中添加的:https://github.com/sequelize/sequelize/issues/4074

有人知道我在这里可能遗漏了什么吗?下面是 Create 方法和来自 Insert 语句的控制台日志。

创建方法

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

控制台日志

Executing (default): 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') RETURNING *;

USER: User { dataValues: { id: 6, firstName: 'James', lastName: 'Martineau', email: 'test@gmail.com', password: '$2b$10$7ANyHzs74OXYfXHuhalQ3ewaS4DDem1cHMprKaIa7gO434rlVLKp2', updatedAt: 2019-02-28T15:18:15.856Z, createdAt: 2019-02-28T15:18:15.856Z }...

最佳答案

处理此问题的正确方法是在 Sequelize 公开的实际数据模型上利用 afterCreate 和 afterUpdate Hook 。这些 Hook 在记录持久化后触发,因此对数据值的任何更改只会反射(reflect)在返回中。

sequelize.define(
'User',
{
id: { type: DataType.UUID, defaultValue: Sequelize.UUIDV4, primaryKey: true },
username: { type: DataType.STRING, allowNull: false },
password: { type: DataType.STRING, allowNull: false }
},
{
hooks: {
afterCreate: (record) => {
delete record.dataValues.password;
},
afterUpdate: (record) => {
delete record.dataValues.password;
},
}
}
);

这是文档的链接:https://sequelize.org/master/manual/hooks.html

关于javascript - 使用 Sequelize Create 方法时如何仅返回特定属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54929244/

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