在尝试使用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)
答案 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 })
// ...
});