我具有这种简单的模式,触点为数字数据类型。奇怪的是,输入数据(触点)总是在蒙古德(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位数字。自定义验证是通过传递验证函数来声明的:
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());