我在我的代码中使用Express.js和Node.js v7.3.在这里我创建了一个User Router将请求转发给我的User Controller.
我在User Controller异步调用中使用async/await .问题是IntelliJ给了我一个警告说
从login()返回的Promise将被忽略.
问题是我甚至没有从login()方法中返回任何东西.
这是代码 -
UserRouter.js
router.post('/login', function (req, res, next) {
userController.login(req, res); // I get the warning here
});
Run Code Online (Sandbox Code Playgroud)
UserController.js
exports.login = async function (req, res) {
try {
const verifiedUser = await someFunction(req.body.access_code);
let user = await User.findOrCreateUser(verifiedUser);
res.status(200).send(user);
}
catch (err) {
res.status(400).send({success: false, error: err});
}
};
Run Code Online (Sandbox Code Playgroud)
如果我只使用本机承诺编写相同的登录方法,那么我不会收到此警告.我在这里理解错误或者IntelliJ有错吗?
编辑 -
感谢@Stephen,我知道async函数会返回一个promise,但如果Intellij发现没有从async函数返回任何内容并且没有显示该警告,那就不会更好了,因为当我.then()在login()函数之后链接a时,它undefined在then结果中提供一个对象.这意味着如果我们不显式地从异步函数返回一些东西,那么返回undefined?
我使用 MatDialog 创建了一个模式。该模态可以从我的工具栏打开。
在模式中,我有一个用于登录和注册的选项卡式页面。这些是通过路由加载的单独组件。
现在我想关闭模式并在用户单击模式内的按钮时将用户重定向到另一个页面。链接已更新,但我的内容未显示!
navbar->modal<->LoginComponent/SignupComponent(此处的链接应关闭模式并重定向)
SignupComponent.ts:(位于模态框内)
registerBuisnessClicked() {
this.dialogRef.close('signup');
Run Code Online (Sandbox Code Playgroud)
}
导航栏.ts:
dialogRef.afterClosed().subscribe(result => {
if (result === 'signup') {
console.log('redirecting to signup');
this.router.navigate(['/signup']);
}
});
Run Code Online (Sandbox Code Playgroud)
为了进行测试,我在导航栏中创建了另一个工具栏项目,它直接路由到我的注册,这有效!
user() {
this.router.navigate(['/signup']);
Run Code Online (Sandbox Code Playgroud)
}
在我的模态中我有以下代码:
模态.html
<nav mat-tab-nav-bar mat-align-tabs="center">
<a mat-tab-link
(click)="switchToLogin()"
[active]="rla1">
Login
</a>
<a mat-tab-link
(click)="switchToRegister()"
[active]="rla2">
Register
</a>
</nav>
Run Code Online (Sandbox Code Playgroud)
模态.ts
constructor(private router: Router) { }
ngOnInit() {
this.router.navigate(['/login']);
this.rla1 = true;
this.rla2 = false;
}
switchToRegister() {
this.router.navigate(['/signup'], { replaceUrl: true });
this.rla1 = false;
this.rla2 = true; …Run Code Online (Sandbox Code Playgroud)