我有一种情况,我想通过 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: {}
属性以及要检查的规则。
关于文档:
模型验证器允许您指定格式/内容/继承 模型的每个属性的验证。验证是 自动在
、create
和update
上运行。您也可以致电save
手动验证实例。validate()
根据验证规则验证该实例的属性 在模型定义中设置。
示例:
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/src/model.js~Model.html#instance-method-validate https://sequelize.org/master/manual/validations-and-constraints.html