无法更新学生数据



我正在尝试更新学生数据,但我无法更新它。在这段代码中,用户需要登录才能更新他/她的数据,用户的用户名是唯一的id,应该与学生的registrationNumber相匹配才能登录。

错误显示"duplicatekey: registrationNumber"但是我没有更新/修改registrationNumber。

router.get('/edit', isLoggedIn, async(req, res) => {
const registrationNumber = req.user.username
const student = await 
Student.findOne({registrationNumber})
res.render('students/edit', { student })
})

router.put('/edit', isLoggedIn, async(req, res) => {
try {
const registrationNumber = req.user.username
const student = await 
Student.findOneAndUpdate(registrationNumber, {...req.body})
res.redirect('/students/profile')
} catch(e) {
console.log(e)
}
})

findOneAndUpdate第一个参数是一个对象(如findfindOne),所以你必须提供一个对象而不是字符串

try {
const registrationNumber = req.user.username
const student = await Student.findOneAndUpdate({ registrationNumber }, {...req.body})
res.redirect('/students/profile')
} catch(e) {
console.log(e)
}

让我们检查body (console.log(body))以确保body.name或registrationNumber在数据库中不存在

与其在参数中传递用户名,不如尝试获取id,因为它似乎需要一个id。

router.put('/edit', isLoggedIn, async(req, res) => {
try {
const registrationNumber = req.params.edit
const student = await Student.findOneAndUpdate(registrationNumber, {...req.body})
res.redirect('/students/profile')
} catch(e) {
console.log(e)
}
})

相关内容

  • 没有找到相关文章

最新更新