Tag: validation

在express-validator中的错误之后停止执行stream程

我正在使用express-validator对Express中的request对象进行表单validation。 我做了如下的事情: req.onValidationError(function(msg) { res.render('signup', { error: msg }); }); req.check('email', 'Please enter a valid email.').len(1,256).isEmail; req.check('password', 'Your password must be at least 8 characters.').len(8,256); var user = { email: req.body.email, password: req.body.password }; User.create(user, function(err, result) { console.log(err, result); }); res.render('signup'); 问题是执行stream程继续,并且它执行我的User.create()方法时尝试两次呈现相同的资源。 它也会抛出一个Error: Can't use mutable header APIs after sent. 因为尝试了双重渲染。 我怎样才能防止这种情况发生?

可以使用表单validationinputtypes的“文件”是否需要?

我使用express-form https://github.com/dandean/express-form 它是否有能力validationtypesfile的input? 我特别想require有人上传文件。 编辑林纳斯:) 我试过: field("pdf").required("pdf", "You must select a file to upload.") 问题是这是寻找req.body.pdf而不是req.files.pdf ,所以它总是认为validation失败。 编辑/工作代码:根据Linus的回答,我做了什么来实现它。 我不仅需要configurationdataSources参数,还需要检查字段的size属性,因为只是在字段上做了required就不够好,因为即使文件input为空,它仍然存在(元数据等)。 所以相反,我做了一个自定义validation函数,确保pdf.size大于0.在我的代码中,我也检查是否有title 。 我留在这里,以防万一有人想知道如何把多个validation串起来。 var form = require('express-form') .configure({dataSources: ['body', 'files', 'query', 'params']}); form( field("pdf.size").custom(function(value) { if (value <= "0") { throw new Error("You must select a file to upload."); } }) , field("title").trim().required("title", "Please enter a title […]

我的Node.js网站的开发版本

我有一个生产版本的VPS上我的网站,我部署到一个裸git回购有一个钩子签出提交到一个应用程序目录。 我永远使用,让我的应用程序从应用程序目录运行。 我想要做的是build立一个我可以推动的开发版本。 开发版本可以托pipe在我的VPS子域下。 但是,我需要一个身份validation步骤来防止任何人和每个人访问开发网站。 我怎么能把身份validation放在整个站点的前面,而对我的应用程序进行很less(如果有的话)更改呢?

在Express.js项目中validation的地方 – 在数据库层validation(re。Mongoose)?

我正在用Express.js写一个表单的应用程序,首先,我在路由器(或控制器,如果你喜欢的话)中进行所有的validation: app.post('/register', function (req, res, next) { // Generic validation req.assert('name', 'Name is empty').notEmpty(); req.assert('username', 'Username is empty').notEmpty(); var errors = req.validationErrors(true); if (errors) { // If there are errors, show them } else { // If there are no errors, use the model to save to the database } }); 但是,我很快就了解到,我的validation应该在模型中进行,与“瘦控制器,胖模式”原则保持一致。 模型: var userSchema […]

如何纠正错误作为没有方法'onValidationError'validation的node.js?

我有registry单,并将值发布到注册函数,在那里它将validation与节点validation器的表单值。 但是,当我尝试使用节点validation器,它不断得到错误TypeError:Object#没有方法'onValidationError' 。 validation器已经安装在我的应用程序。 在app.js中 app.post('/register', test.register); 在test.js中 var check = require('validator').check, sanitize = require('validator').sanitize; exports.register = function(req, res){ var errors = []; req.onValidationError(function(msg) { //res.render('signup', { error: msg }); errors.push(msg); }); req.check(req.body.email, 'Please enter a valid email').len(6,64).isEmail(); req.check(req.body.username, "Username can't be empty!").isNull(); if (errors.length) return res.render( 'register', { regErr: errors.join('\n') } ); } 如何纠正这个错误?

无法使用geddy输出自定义validation错误消息

我正在使用geddy框架,并遵循validation示例 。 在我的用户模型中,我有以下自定义validation规则: this.validatesWithFunction('password', function(val) { var re = /^[a-z0-9]+$/i; return re.test(val) }, {message: 'must be alphanumeric'}) 在我看来,我这样做: <% if(params.err['password']) { %><%=params.err['password'];%><% } %> validation规则确实按预期工作 。 然而,我得到的消息在我看来是一个通用的(“密码”是无效的)消息,而不是我在选项(“必须是字母数字”)中指定的消息。 任何指针,我要去哪里错了?

Mongoose嵌套模式validation不起作用

我有以下mongoose模型: RequestSchema = mongoose.Schema( merchant: type: String required: true products: [ 'Product' ] ) Request = mongoose.model('Request', RequestSchema) ProductSchema = mongoose.Schema( _type: String product_id: type: String required: true quantity: type: String required: true ) Product = mongoose.model('Product', ProductSchema) 但是,当我通过下面的请求(这是缺less一个数量),它得到validation,并保存到数据库: {"merchant": "ABC", "products":[{"product_id":"12345"}]} 但是,当我尝试删除商家时,尝试保存它会导致架构validation错误: {"products":[{"product_id":"12345", "quantity": "1"}]} 我如何使这些都返回validation错误?

检测任何不需要的属性的Backbone模型validation

我实现了这个简单的function来检测骨干模型中的任何不需要或未指定的属性: var Underscore = require( '/usr/local/lib/node_modules/underscore' ), Backbone = require( '/usr/local/lib/node_modules/backbone' ), Validation = require( '/usr/local/lib/node_modules/backbone-validation' ); Underscore.extend( Backbone.Model.prototype, Validation.mixin ); var User = Backbone.Model.extend( { validation: { firstname: { minLength: 1, maxLength: 20, required: true }, lastname: { minLength: 1, maxLength: 20, required: true } }, … isAttributeAccepted: function( attr ) { var retval […]

如何在我的Node.js服务器上validationGKLocalPlayer

在Apple的Doc,generateIdentityVerificationSignatureWithCompletionHandler中 ,将连接成数据缓冲区4个参数,其中之一是“ Big-Endian UInt-64格式的时间戳参数”,然后生成一个SHA-1哈希值进行validation。 有没有人在Node.js / Javascript中成功完成这个任务? 我遇到的主要问题是Javascript / Node.js似乎没有任何支持64位无符号的大端整数; 它似乎最大在32位,无符号。 PS:我知道那里有以下相关的问题,但他们没有解决这个特定的JavaScript问题。 如何在我的“第三方服务器”上validationGKLocalPlayer? :解决scheme是针对ruby,python和obj-c; 所有的本地支持生成时间戳的64位BEhex。 如何从第三方node.js服务器validationGame Center用户 :代码依赖于客户端向服务器发送一个已经以hexstringforms的时间戳(请参见json.hexTimestamp ,大约在22) 它甚至有可能可靠地创build一个64位无符号大端… 在JavaScript中的hex表示forms? 我正在考虑通过Node.js执行ruby / python作为可能的解决方法。

如何使用Sequelize.js和PostgreSQLvalidation数组字段的数组input?

我使用Node.js + PostgreSQL + Sequelize.js 2.0.2 。 我有以下模式定义的电话字段可能是string数组,但只允许数字: var User = sequelize.define("User", { …. …. /** Phone number * Multiple numbers should be registered due to */ phone: { type: Sequelize.ARRAY(Sequelize.STRING), allowNull: false, unique: true, validate: { isNumeric: true } }, …. …. }); 数字电话号码数组未通过validation。 input : [ '9252522525', '9252525555' ] 错误 : { [SequelizeValidationError: […]