js':'预期的节点js

时间:2019-02-14 09:10:26

标签: javascript node.js mongodb visual-studio-code

在尝试使用nodejs和mongoose注册用户时,我在[js] ':' Expected的{​​{1}}上收到dot notation的错误提示。 我尝试过了

User.findOne(email: res.body.email)

,但是从 postman

发送发帖请求时,它将在运行时引发以下错误
User: User.findOne(...)

这是我的代码

(node:13952) UnhandledPromiseRejectionWarning: ReferenceError: body is not defined
    at User.User.findOne.then.user (C:\Users\Aman\Desktop\qwerty\routes\api\users.js:14:29)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:118:7)
(node:13952) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing ins
ide of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejectio
n id: 1)

2 个答案:

答案 0 :(得分:3)

删除函数(req, res) =>主体外部的括号。它应该看起来像这样:

router.post("/register", (req, res) => {
    User.findOne({ email: req.body.email })
    // other code inside
});

() => ({})将期望返回对象文字表达式,例如JSON对象。 () => {}将在函数体内执行语句。

在MDCN上了解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Syntax

答案 1 :(得分:0)

在箭头功能中,此处使用的语法

(req, res) => ({})

返回一个对象。

const foo = () => ({foo: 'bar'});
console.log(foo());

这是简写

const foo = () => {
  return {
      foo: 'bar'
  }
};

console.log(foo());
    
    

因此,您需要修复代码以真正返回有效对象,或者在函数的开头删除({,并在函数结尾删除})

router.post("/register", (req, res) => {
    User.findOne({ email: req.body.email })
    // ...
});