首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nodejs - UnhandledPromiseRejectionWarning: TypeError:无法将未定义或null转换为object

Nodejs - UnhandledPromiseRejectionWarning: TypeError:无法将未定义或null转换为object
EN

Stack Overflow用户
提问于 2019-11-28 14:09:17
回答 2查看 2.8K关注 0票数 3

我有以下几点

SessionController.js

代码语言:javascript
运行
复制
import User from '../models/User';

class SessionController {
   async store(req, res) {
      const { email, password } = req.body;

      console.log(req.body);

      const user = await User.findOne({ where: { email } });
   }
}

export default new SessionController();

User.js

代码语言:javascript
运行
复制
import Sequelize, { Model } from 'sequelize';
import bcrypt from 'bcryptjs';

class User extends Model {
   static init(sequelize) {
      super.init(
         {
            name: Sequelize.STRING,
            email: Sequelize.STRING,
            password_hash: Sequelize.STRING,
         },
         {
            sequelize,
         }
      );

      return this;
   }

   checkPassword(password) {
      return bcrypt.compare(password, this.password_hash);
   }
}

export default User;

和失眠从/sessions路由发送数据

我调用console.log(req.body)并获得所有数据,所以我不知道为什么会得到这个错误:

代码语言:javascript
运行
复制
(node:8589) UnhandledPromiseRejectionWarning: TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
    at Function.findAll (/home/julio/www/bootcamp2019/gympoint/node_modules/sequelize/lib/model.js:1692:47)
    at Function.findOne (/home/julio/www/bootcamp2019/gympoint/node_modules/sequelize/lib/model.js:1924:17)
    at store (/home/julio/www/bootcamp2019/gympoint/src/app/controllers/SessionController.js:10:41)......

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2020-03-25 07:38:58

同样的问题也发生在我身上。

我能够发现我有一个错误的数据库路径,您可以在第4行和第5行看到。

代码语言:javascript
运行
复制
import express from 'express';
import routes from './routes';

// import './config/database'; (Wrong)
import './database'; // (Correct)

class App {
  constructor() {
    this.server = express();

    this.middlewares();
    this.routes();
  }

  middlewares() {
    this.server.use(express.json());
  }

  routes() {
    this.server.use(routes);
  }
}

export default new App().server;

票数 1
EN

Stack Overflow用户

发布于 2019-11-28 15:25:36

将异步函数的等待调用放在try/catch块中。

代码语言:javascript
运行
复制
import User from '../models/User';

class SessionController {
    async store(req, res) {
        try {
            const { email, password } = req.body;

            console.log(req.body);

            const user = await User.findOne({ where: { email } });
        } catch (e) {
            console.log("Error Occurred", e)
        }

    }
}

export default new SessionController();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59082702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档