我有两个模型用户和公司。在用户中,我存储公司。_ID,将用户与公司相关联。我拥有这两种模型的CRUD功能,因为我可以创建用户并将其与公司相关联,也可以使用在将company._ID字段添加到用户之前创建的用户创建公司。我的问题是,当我尝试将表单中的company字段留空时,它会引发“用户验证失败:company:由于“BSONTypeError”,无法为路径“company”处的值“”(类型字符串)强制转换为ObjectId。
我需要一种方法,我可以先创建一个用户,然后创建一个公司,但在同一时间,如果该公司已经存在,能够与该公司注册。
这是我试图想出的基础上,它给我的结果,以及搜索的文件
在我的用户模型中,我将required设置为false
const { string } = require('joi');
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const passportLocalMongoose = require('passport-local-mongoose');
const UserSchema = new Schema({
email:{
type:String,
required: true,
unique: true
},
level: String,
company: {
type: Schema.Types.ObjectId,
ref:'Companies',
required: false
},
companyName: String
});
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model('User', UserSchema);
在我的表单中没有验证。
1条答案
按热度按时间oo7oh9g91#
因此,您得到的错误告诉您一些事情。您得到错误不是因为您忽略了字段,而是因为您将空字符串赋给字段。您需要进入创建用户的位置,并且仅在company的值是有效的对象ID时才将值赋给company。
潜在问题代码示例:
固定代码示例:
我不确定你是在哪里做的,如果你用你用来创建用户的文件编辑你的帖子,在这个答案上留下评论,我会看一看,但是我保证你在某个时候给
user.company
分配了一个空字符串。