[英]Typescript & Express: Export several routes from single index.ts file to prefix with ''/api/v1"
[英]Cannot GET /api/v1/users/register in Expressjs
我是初級開發人員,嘗試使用 Typescript 種語言開發注冊功能。 基本上,翻譯這個寄存器函數:
app.post("/register", async (req, res) => {
// Our register logic starts here
try {
// Get user input
const { first_name, last_name, email, password } = req.body;
// Validate user input
if (!(email && password && first_name && last_name)) {
res.status(400).send("All input is required");
}
// check if user already exist
// Validate if user exist in our database
const oldUser = await User.findOne({ email });
if (oldUser) {
return res.status(409).send("User Already Exist. Please Login");
}
//Encrypt user password
encryptedPassword = await bcrypt.hash(password, 10);
// Create user in our database
const user = await User.create({
first_name,
last_name,
email: email.toLowerCase(), // sanitize: convert email to lowercase
password: encryptedPassword,
});
// Create token
const token = jwt.sign(
{ user_id: user._id, email },
process.env.TOKEN_KEY,
{
expiresIn: "2h",
}
);
// save user token
user.token = token;
// return new user
res.status(201).json(user);
} catch (err) {
console.log(err);
}
// Our register logic ends here
});
進入這個(這就是我使用 Typescript 的方式):
服務.ts
async function Register (user: UserAttributes):Promise<void>{
await Users.find(user).then(userExist => {
if(userExist) {
console.log('User already exist. You may login if you want')
} else {
throw new Error('User not found. ¡Please register!')
}
});
await bycript.hash(user.password, 10).then(() => {
Users.create(
user.first_name,
user.last_name,
user.email,
user.password
)
});
await jwt.sign(user.id, user.email, process.env.TOKEN_SECRET).then(token => {
user.token = token;
})
}
這是 controller:
Controller.ts
function RegisterController(req: Request, res:Response) {
return Register(req.body).then((SuccesfulRegister)=> {
res.status(200).send(SuccesfulRegister)
}).catch((error) => {
res.status(500).send("Usuario no pudo ser registrado :", error)
})
}
我用 postman 測試了它。一個簡單的測試試圖將用戶注冊到數據庫中,這是服務器返回給我的:
如果有人可以指出我做錯了什么或給我一些更好地工作的提示; 我真的很感激。
Pd:我使用 Postgresql 和 Sequelize 創建模型,配置數據庫和遷移最常用的數據庫“Mongodb”。 如果這值得的話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.