Mongodb mongoose-如何仅验证特定字段?

Mongodb mongoose-如何仅验证特定字段?,mongodb,mongoose,nodes,mean-stack,Mongodb,Mongoose,Nodes,Mean Stack,我有以下mongoose模型和路由文件 user.js 路由器.js 在上面的路由文件中,我可以使用validate()方法验证所有字段,但我需要验证如下条件 ->用户注册时,需要以下字段 尼克的名字 电子邮件 密码 用户类型 _是否处于活动状态 ->当用户编辑其配置文件时(注册后),所有字段都是必需的 有人能帮我解决这个问题吗?我刚刚发现自己处于这种情况,想要更新一个评论模型,并且想要对字段“内容”进行特定的字段验证 我在想一个黑客,从数据库中提取完整的注释文档,然后从注释文档中创建一个新的模

我有以下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' });
                            }
                        });
                    }
                }
            });
    }
});