我将“id”传递给 EJS 中的隐藏输入值,但收到 bson 错误,数据仍正确存储在数据库中,但错误显示在 EJS 文件中
出现错误的form.ejs文件
form.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="/createform" method="post">
<label>Email:</label>
<input type="email" name="email"/><br>
<label>Phone no:</label>
<input type="number" name="number"/>
<input type="hidden" name="userid" value=" <%= result._id %> ">
<button type="submit">Submit</button>
</form>
</body>
</html>
调用 form.ejs 的用户控制器文件
userController.js
exports.postAddAnotherUser = async (req, res, next) => {
const name = req.body.name
const age = req.body.age
try {
const result = await User.create({
name: name,
age: age,
});
console.log(result._id.toString());
const value = result._id
console.log(typeof(value))
res.render("form", {result:result })
} catch (error) {
console.log(error);
}
};
createForm 完美执行
formController.js
exports.createForm = async (req,res,next) => {
const userid = req.body.userid
const email = req.body.email
const number = req.body.number
console.log(userid);
console.log(email);
console.log(number);
try {
const result = await Form.create({
userId: userid,
email:email,
phone:number
})
console.log(result);
res.redirect("/form")
} catch (error) {
console.log(error);
}
}
exports.form = (req,res,next) => {
res.render("form")
}
formModel.js
const FormData = new scheme({
userId:{
type: scheme.Types.ObjectId,
ref: "User"
},
email:{
type: String,
required: false
},
phone:{
type: Number,
required: true
}
})
我已经尝试了所有可能的方法,但我认为它源于 EJS,因为数据确实存储在数据库中,但错误仍然被抛出。 我们正在做 json.toString 但在输入字段的 value 属性中它显示我们正在传递 objectId。
我们为您提供了您看到错误的图像 **写在formController.js最后一行**
res.render("form", {result:result })