Mongodb mongoose-如何仅验证特定字段?
我有以下mongoose模型和路由文件 user.js 路由器.js 在上面的路由文件中,我可以使用validate()方法验证所有字段,但我需要验证如下条件 ->用户注册时,需要以下字段Mongodb mongoose-如何仅验证特定字段?,mongodb,mongoose,nodes,mean-stack,Mongodb,Mongoose,Nodes,Mean Stack,我有以下mongoose模型和路由文件 user.js 路由器.js 在上面的路由文件中,我可以使用validate()方法验证所有字段,但我需要验证如下条件 ->用户注册时,需要以下字段 尼克的名字 电子邮件 密码 用户类型 _是否处于活动状态 ->当用户编辑其配置文件时(注册后),所有字段都是必需的 有人能帮我解决这个问题吗?我刚刚发现自己处于这种情况,想要更新一个评论模型,并且想要对字段“内容”进行特定的字段验证 我在想一个黑客,从数据库中提取完整的注释文档,然后从注释文档中创建一个新的模
尼克的名字
电子邮件
密码
用户类型
_是否处于活动状态
->当用户编辑其配置文件时(注册后),所有字段都是必需的
有人能帮我解决这个问题吗?我刚刚发现自己处于这种情况,想要更新一个评论模型,并且想要对字段“内容”进行特定的字段验证 我在想一个黑客,从数据库中提取完整的注释文档,然后从注释文档中创建一个新的模式对象,该对象的属性与我刚从数据库中提取的相同,并验证该文档模型副本,就像我要创建一个新文档一样,但我不会,我不会使用save()方法。如果“内容”字段有错误,这是我唯一关心的,我会在验证后知道,如果没有错误,那么我会忘记通过从数据库中删除注释文档创建的新对象架构副本,我会忘记它,因为我已经知道我的“内容”字段是有效的,因为没有显示错误,因此,我将继续我的流程 也许我不需要从数据库中提取文档,而只需要创建一个新对象,其中包含一些虚假但有效的字段。。。然后通过我想要测试的真实值,在我的例子中,它是“内容”,我不会伪造这个值,因为我已经有了它
注意:我的注释模型具有属性“createdAt”,因此我会将其替换为当前日期,因为我可能会在验证时出错,说新注释必须来自当前日期,而不是来自过去日期,但由于我不会将该新日期保存到数据库中,我可以添加当前日期,请记住,我将忘记该新对象,我不会将其保存到数据库中,我只关心“内容”字段的验证,看看是否有任何错误。谢谢您的回答。事实上,这个答案的格式很差,很难阅读和理解。在发布之前,请务必在预览部分查看您的帖子。代码正确吗?你用了足够的段落和句子吗?请把你的帖子写得通俗易懂。还可以阅读关于的文章。格式良好的答案会让你获得更多的选票,并有更高的被接受的机会。
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
ObjectId = Schema.ObjectId,
var userSchema = new Schema({
nick_name: {
type: String,
unique: true
},
email: {
type: String,
unique: true
},
first_name: String,
last_name: String,
birth_date: {
type: Date
},
password: {
type: String,
select: true
},
user_type: {
type: Number,
},
is_active: {
type: Number,
default: -1
}
}, { collection: 'user' });
/*
*Validations
*/
userSchema.path('nick_name').required(true, 'nick name is required!');
userSchema.path('email').required(true, 'email is required!');
userSchema.path('password').required(true, 'password is required!');
userSchema.path('user_type').required(true, 'user type is required!');
userSchema.path('is_active').required(true, 'is active is required!');
userSchema.path('is_close').required(true, 'is close is required!');
userSchema.path('first_name').required(true, 'first name is required!');
userSchema.path('last_name').required(true, 'last name is required!');
userSchema.path('birth_date').required(true, 'birth date is required!');
var User = module.exports = mongoose.model("User", userSchema);
var express = require('express');
var router = express.Router();
var User = require('../models/user');
router
.route('/api/user/register')
.post(
function(req, res, next) {
var user_ = new User(req.body);
/*
*here all validations are required
*/
user_.validate(function(err) {
if (err) {
res.json({ "status": 0, "error": err });
} else {
user_.save(function(err) {
if (err) {
res.json({ "status": 0, "error": { "other": "Oops! something went wrong, please try again later." } });
} else {
res.json({ error: 1, message: 'User registered' });
}
});
}
}
});
}
});