如何对ID字段执行验证?

时间:2018-07-30 17:26:18

标签: node.js mongoose

我有猫鼬模式,其中有一个名为 Id 的字段,并且我对所有Id请求都强制设置了 GET, PUT, POST and DELETE 字段

因此,在这种情况下, Id 对于获取,放置和删除请求是强制性的,但是我必须不使用 Id 对于POST请求是必需的。我该怎么办?有帮助吗?

3 个答案:

答案 0 :(得分:0)

from_unixtime(unix_timestamp(current_timestamp)-10*86400,'yyyy-MM-dd HH:mm:ss') 仅用于required:true中要添加到文档中的字段,即在执行mandatory请求时。

对于您而言,您无需为POST字段或您尚未设置为文档必须具有的其他任何字段添加required:true

例如:如果您使用猫鼬

id

答案 1 :(得分:0)

您无需为架构中的 Id 字段输入required:true。因此,对于 POST 请求,它可以正常工作。然后对于 GET / PUT / DELETE 请求,只需检查是否有 Id 字段(您在其中除外)(例如在请求查询/正文/参数中),然后验证该 Id 并做其他工作。

答案 2 :(得分:0)

@gagan,这些更有可能是来自使用您的API的用户的输入。您添加的验证程序用于在Mongo中插入文档。因此,两者是不同的集合。 您可能必须在用户输入(即req.body)上添加验证,以确保在将输入插入数据库之前输入正确。

尽管可以使用条件语句(如if)添加验证,也可以选择使用第三方库。有一个可用的TP库,它简洁,简洁且易于使用。名字是Joi:-

您可以在这里使用它:-

const Joi = require('joi');

function validateUser(user) {
  const schema = {
    name: Joi.string().min(3).required(),
    id: Joi.number().integer(),
    age: Joi.number.integer().min(18) // Incase you want only 18+ age users
  };

  return Joi.validate(user, schema);
}

在消费端:-

const { error } = validateUser(req.body);

注意:-Joi具有两个属性“错误和值”,只有其中一个将具有值。因此,如果有人发送了有效的对象,您将在value属性中产生结果,否则错误将被填充。因此,在使用期间,我添加了错误以确保正确处理我的错误。