Получение "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");
});