Получение "DeprecationWarning: Необработанные отклонения обещания устарели". в реализации Fuse.js для поиска данных из MongoDB в Node.js

Я изучаю Node.js. Я создаю сайт как Eventbrite. Чтобы сделать эффективный нечеткий поиск, я использую fuse.js для поиска событий по EventName, Venue и периоду даты. Я не знаю, почему я получаю эту ошибку. Как я могу решить это?

(узел:3672) [DEP0018] Предупреждение об устаревании: отклонение необработанного обещания устарело.

Я прилагаю свой код ниже:

//Have a look in app.get()

const express = require('express');
const hbs = require('hbs');
const fs = require('fs');
const Fuse = require('fuse.js');
const MongoClient = require('mongodb');
const port = process.env.PORT || 5050;




var app = express();
var bodyParser = require('body-parser');


app.set('view engine', 'hbs');

hbs.registerPartials(__dirname + '/views/partials/');
app.use(bodyParser.urlencoded({
  extended: false
}));
app.use(bodyParser.json());

//to import json in db
//mongoimport --db Gather --collection Events --file JsonDataV2.txt --jsonArray

app.use(express.static(__dirname + '/public'));

let query;
let location;

//???? Getting problem here '/'
app.get('/',(req, res) => {
    MongoClient.connect('mongodb://localhost:27017/Gathered',{ useNewUrlParser: true }, (err,client) => {
        if(err){
            return console.log('Unable to connect to MongoDb server.');;
        }
        try {
          const db = client.db();
        db.collection('Events').find().toArray().then((docs)=>{
          console.log('query proccessed');

          // Fuse.js implementation goes here...
        var options = {
          keys: ['EventName','Organiser','Venue','Time','Details']
        };
        
        var fuse = new Fuse(docs, options);
        docs =  fuse.search(query);


        
        res.render('home.hbs',{
          data: docs,   
          query:query,
          location:location,
          noOfResult:docs.length,
          });

        });
        } catch (error) {
          console.log(error);
          
        }
        
        
        

        client.close();
    });

  
  
  
//   res.render('home.hbs',{
//     pageTitle: 'Home',
//     welcomeMessage: 'Welcome to Home Page :)'
//   });
});

app.post('/',function(req,res){
   query = req.body.query;     //recieve variable by name from frontend
   location = req.body.location;
  console.log("query: ",query);
  console.log("location: ",location);
  // res.send("Working");


});


app.listen(port, () => {
 console.log(`Server is up at port ${port}`);
});

2 ответа

Вы должны сделать что-то вроде этого

 db.collection('Events').find().toArray().then((docs)=>{
      console.log('query proccessed');
       //--do what ever--//
       }).catch((err)=>{
         console.log(err);
       //or handle it as you seem it fit
         })

Обещание имеет resolve а также reject, делать отказ без улова, чтобы обработать это устарело.

Добавьте улов для обработки отклонения обещания.

db.collection('Events').find().toArray().then((docs)=>{
  console.log('query proccessed');
}).catch(function () {
  console.log("Promise Rejected");
});
Другие вопросы по тегам