Tag: validation

如何检查更新过程中数据库中是否已经存在数据(Mongoose And Express)

在将编辑的数据保存在mongoose中之前如何进行validation? 例如,如果sample.name已经存在于数据库中,那么用户将会收到一些类似的错误,下面是我的代码 //Post: /sample/edit app.post(uri + '/edit', function (req, res, next) { Sample.findById(req.param('sid'), function (err, sample) { if (err) { return next(new Error(err)); } if (!sample) { return next(new Error('Invalid reference to sample information')); } // basic info sample.name = req.body.supplier.name; sample.tin = req.body.supplier.tin; // contact info sample.contact.email = req.body.supplier.contact.email; sample.contact.mobile = req.body.supplier.contact.mobile; sample.contact.landline = […]

上下文是什么:“查询”选项使用mongoose时做什么?

在一个 失败的尝试 学习练习让validation器与“document.update”一起工作,我遇到了一些我不明白的东西。 我现在知道这是行不通的,但我尝试的一个方法是将我的选项设置为{runValidators:true,context:'query'}。 在我的validation器function,我试着console.logging(这个),有和没有上下文:“查询”选项。 没有区别。 我收到一个大的对象(这叫做“查询对象”?)这似乎违背了我在这里阅读的内容。 在上面的颜色validationfunction中,这是指在使用文档validation时正在validation的文档。 但是,在运行更新validation程序时,正在更新的文档可能不在服务器的内存中,所以默认情况下这个值没有被定义。 没有定义,即使没有上下文选项。 我甚至试图把它作为一个箭头函数,看看这个词汇是否有什么不同。 在这种情况下,这是不确定的,但是再次改变上下文选项并没有什么不同。 (我还在学习,所以我不知道这部分是否相关)。 在模型中: let Property = mongoose.model('Property', { name: {type:String, required:true}, occupancy: {type:String}, maxTenants: Number, tenants: [{ type:mongoose.Schema.Types.ObjectId, ref: 'Tenant', validate: [checkMaxTenants, "Maximum tenants exceeded for this property. Tenant not added."]}] }); function checkMaxTenants(val){ console.log("this",this); // return this.tenants.length <= this.maxTenants; return true; } 并在路线上: […]

用户帐户激活,电子邮件确认和Passport / Node.Js邀请

我想为在Passport / Neo4J上运行的用户authentication系统设置三件事情: 1)手动用户帐户激活(以便pipe理员); 2)只邀请帐户的创build; 3)激活之前的电子邮件确认帐户; 我想知道是否你知道任何易于使用的Passport插件(我还没有find自己的,但也想要你的build议),也是 – 实现它的最好方法是什么(也许你已经完成/看到它,所以你可以分享代码?) 谢谢!

快速请求身体validation

我想创build一个快速中间件看起来像这样: function validate (options) { var defaultOptions = {…} , validations = _.extend(defaultOptions, options); return validate (req, res, next) { /* Use some sort of validation framework where I can pass `validations` into*/ next(someErrors || null) } } 我已经用中间件选项以及窗体查看了两个节点validation器 ,但是他们都没有看起来像是可以将“规则集”传递给它们,并让它们针对提供的input运行规则。 有没有人有任何build议,如何做到这一点与这些模块或另一个,我还没有find呢? 我将不得不推出自己的做法吗? UPDATE 这确实是为了validation表单post。 我知道不会有一个中间件将会覆盖整个站点的所有post; 这将只用于某些路线。 我想要可重复使用的中间件,因为我们正在制作具有通用路由的API,并期望我们希望以类似的方式validation常见的表单体,并且可以根据每个API调整该表单。

在Node.js服务器中validationGoogle授予的OAuth令牌的正确方法是什么?

我试图validationAndroid平台的移动应用程序自定义node.js服务器API。 我想为此使用Google OAuth2令牌,而不是推出自己的身份validation,因为安装了Google Play的Android设备可以让应用开发者使用。 我正在使用Google Play服务库中的GoogleAuthUtil.getToken调用, 这里logging了GoogleAuthUtil.getToken调用。 我试图按照这个Android开发人员博客post概述的build议 getToken方法在我的情况下返回一个长857字节的string。 如果我尝试将此令牌传递给Google的TokenInfo端点,则会返回: {'错误':'invalid_token','error_description':'无效的值'} 我在这里做错了什么? 在getToken调用的“范围”中,我发送: audience:server:client_id:**i_put_my_clientid_here** 。 我有一个clientid为“已安装的应用程序”生成。 使用这个客户端ID,对getToken的调用根本不起作用。 当我生成一个“服务帐户”的客户端ID,调用成功,但我得到一个857字节的令牌失败,如上所述传递到TokenInfo端点。 编辑:我也创build了“Web应用程序”的客户端ID,因为它似乎是调用getToken时使用的正确的客户端ID。 但行为是一样的,我得到一个857字节的令牌,调用Google的端点时不validation。 如何在Android上使用Google Play服务正确获取有效的身份validation令牌? 一旦我有正确的标记,什么是正确的node.js库来validation它的服务器端? 我可以使用passport-google-oauth吗?

Node.js – 发送注册邮件

我有一个单一的电子邮件字段registry单。 当用户input邮件时,我需要发送一个注册链接。 我已经看到这个 Node.js示例registry单。 但它只发送欢迎function。 有发送注册邮件的Node.js应用程序的例子吗?

在Express.js中POST数据JSONvalidation

我正在使用Node.js和Express.js编写一个应用程序。 该应用程序有一个(小)REST API,然后是一个Web前端。 我使用MongoDb。 对于API,我倾向于POST数据到某个端点,然后进行处理或者其他操作,并将其转储到数据库中。 但是,我有一些数据库架构,我想强制执行。 什么是我的选项/最佳做法,强制执行我的POST数据的特定结构,所以我知道某些领域是目前和特定types。 如果这可以在中间件级别完成,那将是很好的,但这不是必需的。 人们通常为validation/模式执行做什么?

如何在Node.js + Express + Mongoose + Jade中处理表单validation,特别是嵌套模型

你如何处理Express和Mongoose的表单validation? 你使用自定义的方法,一些插件,或默认错误数组? 虽然我可能会看到使用默认的错误数组进行一些非常简单的validation,但是这种方法似乎在嵌套模型的场景中爆炸了。

JavaScriptvalidation,可以在客户端和Node.js服务器上运行?

我有什么select使用相同的JavaScript代码来validation客户端和服务器端(Node.js)?

Mongoose pre.save()asynchronous中间件没有按预期工作

以下为: Mongoose唯一validation错误types 我使用这个模式从npm的mongoose 3.0.3 : var schema = new Schema({ _id: Schema.ObjectId, email: {type: String, required: true, unique: true} }); 用这个中间件从unique:true获取一个validationError schema.pre("save", function(next, done) { var self = this; model.findOne({email : this.email}, 'email', function(err, results) { if(err) { done(err); } else if(results) { console.warn('results', results); self.invalidate("email", "email must be unique"); done(new Error("email must be unique")); […]