杂种架构中的名称总是被保存为字符串

问题描述 投票:0回答:1

我具有这种简单的模式,触点为数字数据类型。奇怪的是,输入数据(触点)总是在蒙古德(Mongodb)中保存为字符串。我不知道,背景中发生了什么,或者我错过了一些东西。

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);
在我的路线文件中,我发送用户数据以添加到DB中,例如

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 = { name: req.body.name, email: req.body.email, contact: req.body.contact }

您可以看到req.body.contact是用户以表单输入的任何内容,我以这种方式传递。

问题是,我要么不了解实际概念,要么必须有更多的东西。 注意:我不使用任何Express或Mongoose验证器Middlewares。

任何帮助都将不胜感激。

您可以针对正则表达式测试接触值。下面的示例显示了使用正则表达式的自定义验证器来验证10位数字。自定义验证是通过传递

验证函数来声明的:
node.js mongodb validation express mongoose
1个回答
2
投票
var memberSchema = new Schema({ contact: { type: Number, validate: { validator: function(v) { return /d{10}/.test(v); }, message: '{VALUE} is not a valid 10 digit number!' } } }); var Member = mongoose.model('Member', memberSchema); var m = new Member(); m.contact = '123456789'; // Prints "ValidationError: 123456789 is not a valid 10 digit number!" console.log(m.validateSync().toString()); m.contact = 0123456789; // Prints undefined - validation succeeded! console.log(m.validateSync());

您也可以以这种方式写...这是用于打字稿代码的 const usershema = new猫豆({{{{{ 用户名:字符串, 电子邮件:字符串, 密码:字符串, firstName:字符串, lastname:字符串, 移动的: { 类型:数字, 证实: { 验证器:函数(v:number){ 返回 /d {10} /。test(v.toString()); },, 消息:“手机号必须正好是10位数字” },, },, });

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.