我正在嘗試在 nodejs、express 和 mysql 中使用 MVC 在沒有 JWT 的情況下進行示例注冊,因此當我運行我的代碼時出現錯誤:
型別錯誤:無法在exports.register 處讀取未定義的屬性(讀取'firstName')
這是我的代碼:
身份驗證控制器
const AuthModel = require('../models/Auth')
// Create and Save a new User
exports.register = (req, res) => {
// Validate request
if (!req.body) {
res.status(400).send({
message: "Content can not be empty!"
});
}
// Create user
const user = new AuthModel({
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: req.body.password
});
// Save user in the database
AuthModel.createUser(user, (err, data) => {
if (err)
res.status(500).send({
message:
err.message || "Some error occurred while registring."
});
else res.send(data);
});
};
驗證模型
const AuthModel = function(table){
this.firstName = table.firstName;
this.lastName = table.lastName;
this.email = table.email;
this.password = table.password;
}
AuthModel.createUser = ( newUser, result ) =>{
db.query("INSERT INTO users SET ?", newUser, (err, res) => {
if (err) {
console.log("error: ", err);
result(err, null);
return;
}
console.log("User are registed: ", { id: res.insertId, ...newUser });
result(null, { id: res.insertId, ...newUser });
});
};
uj5u.com熱心網友回復:
在我看來好像 req.body 是未定義的。我認為您可能需要像 body-parser 這樣的東西,從版本 4 開始,它已被添加到 Express 的核心中。
嘗試將此中間件添加到您的入口點: app.use(express.json());
在此處查看更多資訊:http : //expressjs.com/en/api.html#express.json
uj5u.com熱心網友回復:
在你的exports.register, 你.send()如果身體是未定義的。這并不意味著不會執行其余的代碼。
代替:
res.status(400).send({
message: "Content can not be empty!"
});
經過
return res.status(400).send({
message: "Content can not be empty!"
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/355529.html
