我遇到了一种情况,我想通过 Stripe 接受付款,但首先需要验证表单输入。
一旦表单验证,在成功函数中我将调用 Stripe 并确保其正常。如果两者都很好,我将处理付款,然后保存帖子。
我正在努力事先对帖子进行验证 - 请记住,我还不想保存它。
我正在使用 Express/Node.js 和 Sequelize - MySQL
var post = Post.build({
title: req.body.title,
description: req.body.description,
})
我尝试过类似的操作,但在我的控制台中它显示全红色。
post.validate().error(err => {
console.log(err)
})
下面这个解决方案是我在网上找到的,不起作用
// if (errors) {
// for (var prop in errors) {
// console.log(prop.error)
// if (errors.hasOwnProperty(prop)) {
// console.log(errors[prop])
// console.log("Errors for field " + prop + ": ");
// // for (var i = 0; i < errors[prop].length; i++) {
// // errors[prop][i];
// // }
// }
// }
我想立即返回所有表单错误,然后当通过时,执行我的 Stripe,然后当通过时,保存两者。
最佳答案
要使用 sequelize
验证字段并得到重大错误,指出问题出在哪里,您必须在模型定义中使用 validate: {}
属性以及要检查的规则。
关于文档:
Model validators allow you to specify format/content/inheritance validations for each attribute of the model. Validations are automatically run on
create
,update
andsave
. You can also callvalidate()
to manually validate an instance.Validate the attributes of this instance according to validation rules set in the model definition.
示例:
module.exports = (sequelize, DataTypes) => {
const test = sequelize.define(
'test',
{
testDate: {
allowNull: false,
type: DataTypes.Date,
defaultValue: DataTypes.NOW,
validate: {
isDate: true,
},
}
},
{
freezeTableName: true,
timestamps: false,
}
)
}
手动验证:
const item = await test.build(object)
const validatedItem = await item.validate()
您可以在这里找到更多内容:
https://sequelize.org/master/class/lib/model.js~Model.html#instance-method-validate https://sequelize.org/master/manual/validations-and-constraints.html
关于javascript - 在保存之前使用 Sequelize Build 构建并验证模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57814935/