Moongose - 得到了一个模式,但它被忽略了

时间:2018-05-03 16:34:57

标签: node.js mongodb mongoose

我得到了一个moongose架构 -

const allPromises= [];
for (let i = 0; i < loopLength; i+=1) {
  allPromises.push(executeQuery(querystring));
}
Promise.all(allPromises).then((result) => {
  // code here
} 

如果我在例如邮递员,如果我提交空对象,它会正确地抛出一个错误:

mongoose.Schema( { companyName: { type: String, required: true } }, { companyEmail: { type: String, required: true } }, { companySite: { type: String, required: true } })

但是,如果我只输入"Path 'companyName' is required.",,即使我没有输入companyNamecompanyEmail,也要求正确处理帖子请求。寻求帮助。

2 个答案:

答案 0 :(得分:1)

如果您正在使用html表单数据,这些字段仍会被处理为空字符串&#34;&#34;。在后端,我会检查companyName.length&gt; 0,并在将数据插入mongodb之前处理错误

答案 1 :(得分:1)

mongoose.Schema函数只接受一个描述数据模型的参数。但是,在JS中,在函数调用时没有验证参数的数量,因此使用三个参数的调用不会失败,只是忽略了最后两个。有效地,您的代码创建的架构仅包含companyName字段。

您应该像这样创建架构,以使其验证(并荣誉)所有三个字段。

mongoose.Schema({
    companyName: {
        type: String,
        required: true
    },
    companyEmail: {
        type: String,
        required: true
    },
    companySite: {
        type: String,
        required: true
    }
});