我是表達和 mongodb 的新手...我正在嘗試使用 user.findOne({email}) 函式回傳帶有 await 關鍵字的電子郵件的用戶,但節點 js 拋出錯誤說
let user = await User.findOne({ email: req.body.email });
^^^^^
SyntaxError: await 僅在異步函式中有效
const express = require('express');
const User = require("../models/user");
const {body, validationResult} = require("express-validator");
const router = express.Router();
// Listening the request at assigned route
router.post('/', [
// Validation array
body("name", "Enter name").isLength({ min: 5 }),
body("email", "Enter valid email").isEmail(),
body("password", "password must not be less than 5").isLength({ min: 5 })
] ,
(req, res) => {
// Errors in a single json...
const errors = validationResult(req)
// If there error return the error json...
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
// Check if there any user with same email...
let user = await User.findOne({ email: req.body.email });
if (user) {
return res.status(400).json({ error: "A user with this email already exist..."});
}
// Create user...
// user = await User.create({
// name : req.body.name,
// email : req.body.email,
// password : req.body.password
// })
// res.json(user)
res.send("Successful request...??");
})
module.exports = router
uj5u.com熱心網友回復:
您只能在異步函式中使用 await。然后你可以寫:
(req, res) => {
like
async (req, res) => {。
另一種方法是不使用異步(但這也可以),是使用回呼函式:
User.findOne({ email: req.body.email }).then((user)=>{ /* Your logic here */})
一般來說,我不喜歡混淆異步/回呼,所以我堅持只使用異步或只使用回呼:)
uj5u.com熱心網友回復:
使用關鍵字使回呼函式異步
async (req, res) => {}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/431845.html
標籤:javascript 节点.js mongodb 猫鼬模式
下一篇:Mongodb按嵌套欄位分組
