gpt4 book ai didi

javascript - 正确处理 Express 中的 API 表单输入

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

我正在使用 Express 开发 API,我想询问是否有更好的方法来处理用户输入。我使用 Express 4 和 Sequelize ,并使用 Sequelize 进行验证。然而,我的创建路线有点像这样:

    app.route('/cards').post(requireAuthenticated, function (req, res, next) {
// Input validation
Card.create({
name: req.body.name,
caption: req.body.caption,
cost: req.body.cost,
tier: req.body.tier,
cardType: req.body.cardType,
readyTime: req.body.readyTime,
attack: req.body.attack,
health: req.body.health,
movement: req.body.movement,
range: req.body.range,
upkeep: req.body.upkeep,
canAttack: req.body.canAttack,
canDefend: req.body.canDefend,
canMove: req.body.canMove,
targetable: req.body.targetable,
description: req.body.description,
comment: req.body.comment,
user_id: req.user.id
})
.then( function (card) {
res.send(card);
})
.catch( function (e) { next(e); });
});

这工作得很好,但还有很多不足之处。我省略了输入的验证,因为它更长,而且这甚至不是我的 API 中最大的模型。

一个明显的问题是,每当未设置属性时,模型的属性将被设置为 null 而不是默认值或旧值。然后就是重用这段代码的问题。

不过,我觉得我在这里做错了什么。我试图在这方面找到一个 npm 模块,但只找到了用于验证的模块,而不是用于正确将输入输入数据库的模块。

也许有人有更好、更优雅的解决方案?

最佳答案

对于记录创建时间较长的情况,可以使用node内置的extend函数:

var extend = require('util')._extend

var newCard = extend({}, req.body);
newCard.user_id = req.user.id;

Card.create(newCard).then(...);

并且在定义模型时可以使用sequelize 定义列的默认值:

sequelize.define('modelName', {
columnA: {
type: Sequelize.BOOLEAN,
defaultValue: true
}
...
});

关于javascript - 正确处理 Express 中的 API 表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33343252/

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