Tag: validation

如何在Node.js中检查string是明文还是base64格式

我想检查给我的函数给定的string是纯文本还是base64格式。 我能够将纯文本编码为base64格式并将其反转。 但我想不出任何方式来validationstring是否已经是base64格式。 任何人都可以请build议在节点js这样做的正确方法? 是否有任何API可以在节点js中使用。

mongoose模式中的数字types总是保存为string

我有这个简单的模式,与联系数字数据types。 奇怪的是,input数据(联系人)总是被保存为mongodb中的string。 我不知道背景中发生了什么,或者我错过了什么。 var mongoose = require('mongoose'); var memberSchema = new mongoose.Schema({ . . Other fields are not shown/ necessary . contact: { type: Number, required: true, } }); module.exports = mongoose.model('Member',memberSchema); 在我的路由文件中,我发送用户数据以便像这样添加到数据库中 exports.post = function(req,res,next){ if(!req.body.name || !req.body.email || !req.body.contact) return res.render('index', {error: 'Fill Name, Email and Contact'}); //req.body.contact = parseInt(req.body.contact); var member = […]

生成JoivalidationSequelize模型

我用expressjs开发了一个API, Sequelize是我用过的ORM。 我想整合快速validation到我的API来validation请求主体和参数。 express-validation框架使用Joivalidation规则。 但是因为我已经在Sequalize模型中定义了validation规则,所以我不喜欢使用Joi来重新定义validation规则来请求主体validation。 我只是想知道是否有任何方法或库根据在Sequelize模型中定义的validation生成Joivalidation规则。 否则,处理这个问题最好的办法是什么?

如何使用快速validation器注册时validation用户名

我正在使用express / node为validation/授权创build后端api,并使用mongodb存储数据。 我正在使用express-validator来validationinput请求。 我想validation一个用户名是否已经存在 – 库build议我应该使用一个asynchronous函数来做到这一点。 虽然它在邮差中返回了正确的错误信息,但是我的服务器崩溃了。 错误:发送后无法设置标题。 Server.js app.use(validator({ customValidators: { isUsernameAvailable: function(username) { return new Promise(function(resolve, reject) { User.findOne({'username': username}, function(err, results) { if(err) { return resolve(err); } reject(results); }); }); } } })); auth.route.js var express = require('express'); var router = express.Router(); var controller = require('../controllers/auth.controller'); var middleware = require('../middleware/auth.middleware'); router.post('/login', […]

如何检查express / node js中get方法中是否有支持的参数?

我在我的node.js后端有一个方法: app.get('/reports', function(req, res){ var amount = req.param('amount'); var longitude = req.param('long'); var latitude = req.param('lat'); var distance = req.param('distance'); var numberOf = req.param('numberOf'); 我使用一个validator.js( https://github.com/chriso/validator.js )插件来validation它的input。 所以例如它看起来像这样的数量: var amount = req.param('amount'); if (amount && !validator.isNumeric(amount)) { return res.status(406).send("Please send a valid amount"); } 当用户键入: /reports?amount=aaa他会得到错误。 当他键入/reports?amount=2他会得到过滤结果。 但是,例如,当用户input一些随机参数,例如/reports$randomString=21我想给他返回一个消息,对不起,但是randomString不是一个有效的参数。 我怎么能做到这一点,而不知道用户可以键入什么样的不同string?

mongoosevalidation和保存代码

这就是我validation和保存我的用户的方式: var user = new User({ /** from body **/ }); user.validate((err) => { if (err) { console.log(err); res.json({ success: false, message: 'Invalid input' }); } else { user.save((err) => { if (err) { throw err; } console.log(err); res.json({ success: true }); }); } }); 用更less的代码行或没有if/else方法是否有更好的方法来validation和保存mongoose?

向Express模型添加一个方法

假设我有一个Express模型: var SchemaDescription = {}; var Model = = new mongoose.Schema(SchemaDescription); Express允许在SchemaDescription中调整数据validation。 在保存它完美的作品,但在更新,由于mongoose性质,它不被称为,并没有干净的方式来称呼它。 我试过Model.pre('update', …); 但没有find在写入数据库之前访问/更正模型数据的方法:因为复杂的validation逻辑,例如在检查之前重新格式化一些数据。 一个合乎逻辑的解决scheme是将validation代码保存/更新控制器的处理程序,但会导致代码的重复。 为了保存MVC模式,至于更新,我想把一个公共方法,模式,或架构,获取input数据和validation它们。 我的尝试看起来像: Model.prototype.validate = function(input, isUpdate) {…}; 要么 SchemaDescription.validate = function(…) {…}; 以不同的组合。 响应总是看起来像"Cannot set property 'validate' of undefined" 有没有一种方法可以将一个自定义的公共函数成员放到Express模型/模式中,以便在控制器中调用? 可以使用什么方法validation保存和更新的数据,而不会出现代码重复,或者将validation逻辑放在控制器上?

Node + Jsonvalidation键嵌套数组

我有示例json。 在那个JSON中,我需要检查以下的东西。 有效的JSON与否。 名称键是不需要空的(列表名称和项目名称)。 项目数组的长度需要大于5。 我附上了我的代码,并没有工作。 我觉得这种做法不好。 任何人都可以请build议给我正确的道路。 var test = '{ "lists": [ { "items": [ { "name": "Curd0", "sequence": 3 }, { "name": "Curd1", "sequence": 2 }, { "name": "Curd2", "sequence": 1 }, { "name": "Curd3", "sequence": 4 }, { "name": "Curd4", "sequence": 10 }, { "name": "Curd5", "sequence": 9 }, { "name": […]

mongoosevalidation器

我有2个模式,其中包含validation器,PhotosSchema,UserSchema。 因为mongoose'更新'function使用本地mongo驱动程序(据我所知),它不会触发和validation检查。 因此在两个模式中我都这样做: PhotosSchema.pre('update', function(next) { this.options.runValidators = true; next(); }) 在照片模式中,它效果很好! 它在每次更新之前都会运行validation。 但在用户,由于某种原因,它不会触发validation,我清楚地看到所有的validation,当我检查'这'在'更新'前,但我真的不明白什么是它不会甚至不会调用该函数。 文件附在这里:)照片模式: 'use strict'; var mongoose = require('mongoose'), crate = require('mongoose-crate'), S3 = require('mongoose-crate-s3'); var path = require('path'); var consts = require('../../config/environment/shared') var PhotosSchema = new mongoose.Schema({ userId :{ type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, photoIndex: { type: Number, validate: [photosLimit, […]

根据MongoDB收集数组validation数组

我正在尝试对我的mongodb集合进行validation。 我们将事件作为数组存储在集合中。 收集信息: [New York, Palo Alto, Washington DC] 用户input: [New York, Palo Alto] 我想比较input到收集和返回“位置已经添加”。 我的代码如下 var addevent = req.body.events; var addeventarr = addevent.split(','); Event.findOne({'location': eventloc }, 'events', function(err, event) { var eventcheck = event.events; console.log(eventcheck.indexOf(addeventarr)); 我想我可以做一些如下的事情: if(eventcheck.indexOf(addevent) != -1 || null){ console.log("already added"); }else{ console.log("added"); 然而,indexOf返回-1而不是0.如果我只input一个“纽约”,我会得到“已经添加”的消息,但是如果我尝试了两个,我就会得到“已添加”消息。 任何帮助,将不胜感激。