我有以下代码:
const userSchema = new mongoose.Schema({
email: {
type : String,
required : true
},
password: String,
username : String,
});
const User = mongoose.model('User',userSchema)
const loadCollection = async() => {
await mongoose.connect(url,{useNewUrlParser : true})
return mongoose.connection.collection("users");
}
现在,当用户访问端点时,我需要创建一个新用户,为此,我正在使用以下代码:
router.post('/adduser',async (req,res)=>{
const db = await loadCollection()
const newUser = new User({
password : 10,
username : 10,
})
try {
await db.insertOne(newUser)
res.status(201).send()
} catch(e) {
// should be triggered because of the invalid data input
res.status(400).send()
}
})
如您所见,我正在将数字传递到所有这些应为String
类型的值中……也没有通过email
这是必填字段...文档正在获取保存到数据库中而不会引发任何错误...请注意,我不想使用save()
方法,因为我有需要使用findOneAndUpdate
更新的子模式
有什么方法可以不使用save()
方法,当然也可以使用猫鼬来引发错误。
答案 0 :(得分:0)
您可以使用validate
方法。
所以在您的代码中,我可能会按照以下步骤进行操作:
router.post('/adduser',async (req,res)=>{
const db = await loadCollection()
try {
const newUser = new User({
password : 10,
username : 10,
})
await newUser.validate()
await db.insertOne(newUser)
res.status(201).send()
} catch(e) {
// should be triggered because of the invalid data input
res.status(400).send()
}
})
这是mongoose参考