如何修复“ UnhandledPromiseRejectionWarning:ReferenceError:”?

时间:2019-10-01 19:31:04

标签: javascript node.js asynchronous model-view-controller controller

我正在参加名为Semana OmniStack 9.0的活动,我们目前正在该活动上使用MVC和MongoDB在NodeJS上开发应用程序的后端,因此在我的一个控制器中弹出了此错误'UnhandledPromiseRejectionWarning:ReferenceError:斑点没有定义”,我试图解决,但是没有运气。

我已经检查了我的代码并将其与讲师的代码进行了比较,我认为我正在弄乱JS的异步等待方面的东西,这是我以前从未编写过的代码。

这是我的SpotController:

const spot = require('../models/Spot');

module.exports = {
    async store(req, res) {
        const { filename } = req.file;
        const { company, techs, price } = req.body;
        const { user_id } = req.headers;

        const spot = await Spot.create({
            user: user_id,
            thumbnail: filename,
            company,
            techs: techs.split(',').map(tech => tech.trim()),
            price
        });

        return res.json(spot);
    }
};

这是数据库(即MongoDB)的Spot模型:

const mongoose = require('mongoose');

const SpotSchema = new mongoose.Schema({
    thumbnail: String,
    company: String,
    price: Number,
    techs: [String],
    user: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    }
});

module.exports = mongoose.model('Spot', SpotSchema);

当我运行Insomnia(类似于Postman的程序)后,应用程序崩溃并抛出此错误:

(node:13956) UnhandledPromiseRejectionWarning: ReferenceError: Spot is not defined
    at store (C:\Users\sadkevin\Desktop\Programs\Rocketseat\SemanaOmnistack9\backend\src\controllers\SpotController.js:9:22)
    at Layer.handle [as handle_request] (C:\Users\sadkevin\Desktop\Programs\Rocketseat\SemanaOmnistack9\backend\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\sadkevin\Desktop\Programs\Rocketseat\SemanaOmnistack9\backend\node_modules\express\lib\router\route.js:137:13)
    at Immediate.<anonymous> (C:\Users\sadkevin\Desktop\Programs\Rocketseat\SemanaOmnistack9\backend\node_modules\multer\lib\make-middleware.js:53:37)
    at runCallback (timers.js:706:11)
    at tryOnImmediate (timers.js:676:5)
    at processImmediate (timers.js:658:5)
(node:13956) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was
not handled with .catch(). (rejection id: 1)
(node:13956) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

我通过Imsonia发送数据后,应该向我返回一个JSON文件,有想法吗?

0 个答案:

没有答案