Пн goose и MongoError - PullRequest
       3

Пн goose и MongoError

0 голосов
/ 18 января 2020

Я получаю странную ошибку. Я предполагаю, что это потому, что я не обрабатываю ошибку правильно, чтобы получить больше информации. Вот ошибка, которую я получаю. Я искал здесь без успеха в поиске чего-то подобного. Документы просто сбивают меня с толку.

{"name":"MongoError","level":"error","service":"user-service"}

Вот мой сценарий подключения:

const mongoose = require('mongoose'),
      logger   = require('./logging');

async function connect(){

  await mongoose.connect("mongodb://localhost:27017/fdData")
    .catch(error => {
      logger.error(error);
  });
}

async function disconnect(){
    await mongoose.disconnect()
    logger.info('DB disconnected');
}

module.exports= {connect, disconnect}
}

module.exports= {connect, disconnect}

И вот где я его называю. (Это всего лишь небольшой фрагмент сценария).

ОБНОВЛЕНО 1/20/20 @ 1024am PST.

  • (Удалены db.connect () и db.disconnect от погоды. js. Db.connect происходит в приложении. js. Weather. js проверяет пн goose состояние готовности и сообщает о состоянии 1 (подключено).
  • Добавлен mon goose Op результат в логгер, так что теперь мы видим результат попытки mon goose op в консоли.
//schema setup

const weatherSchema = new mongoose.Schema({
        condition: String,
        temp: Number,
        windDir: String,
        windSpd: Number,
        windGust: Number,
        windChill: String,
        humidity: Number,
        icon: String,
        tempIcon: String,
        date: String,
        updated: String,
    });

const weatherWarningSchema = new mongoose.Schema({
        warning: String,
        warningStart: String,
        warningExpire: String,
        warningBody: String,
        id: String,
        date: String,
    });

const Weather = mongoose.model("weather", weatherSchema);
const Warning = mongoose.model("warning", weatherWarningSchema);

currentWeather=[];

async function saveWeather(update){

/////////commented Out for troubleshooting//////////
    // await db.connect() 
    //     .then(error=>{logger.error(error)
/////////end comments/////////////
            Weather.findOneAndUpdate({date: update.date}, 
                {   date:update.date, 
                    condition:update.condition,
                    temp:update.temp, 
                    windChill:update.windChill, 
                    windDir:update.windDir, 
                    windSpd:update.windSpd, 
                    windGust:update.windGust, 
                    humidity:update.humidity, 
                    icon:update.icon, 
                    tempIcon:update.tempIcon, 
                    updated:update.updated}, 
                {upsert:true,
                new: true,}, 
                function(error, result){
                    if (error){
                        logger.error(error);
                    } else{
                        console.log(result);
                        logger.info('Weather Saved to DB '+moment().utcOffset(-8).format('HH:mm'))
                    }
                })
                console.log('Mongoose Ready State: '+mongoose.connection.readyState)
///////commented out for troubleshooting////////
        // }).then((res, error)=>{
        //     if(error){
        //         logger.error(error)
        //     }
            // db.disconnect();
        // })
/////////end comments/////////

}

Это полный начальный вывод в консоли:

Получение данных записи ...

Обновление данных о погоде ...

(узел: 3890) Предупреждение об устаревании: текущий механизм обнаружения и мониторинга сервера устарел и будет удален в следующей версии. Чтобы использовать новый механизм обнаружения и мониторинга сервера, передайте опцию {useUnifiedTopology: true} конструктору MongoClient.

(узел: 3890) DeprecationWarning: текущий синтаксический анализатор строк URL устарел и будет удален в будущей версии. Чтобы использовать новый анализатор, передайте сообщение {useNewUrlParser: true} в MongoClient.connect.

{"message ":" Сервер панели мониторинга запущен ing on 3000 "," level ":" info "," service ":" user-service "}

{" message ":" токен Crewsense является текущим "," level ":" info "," service ":" user-service "}

{" message ":" Токен A911 является текущим "," level ":" info "," service ":" user-service "}

Пн goose Состояние готовности: 1

{_id: 5e25ef3d8c936f22f7722326, дата: '2020-01-20', __v: 0, состояние: 'Солнечно', влажность: 96, значок: 'sunny.png ', temp: 34, tempIcon:' https://cdn.aerisapi.com/wxicons/v2/cold.png ', обновлено: '01 / 20/20 10:19', windChill: '34', windDir: 'N', windGust: 0, windSpd : 0}

{"message": "Погода сохранена в БД 10:19", "level": "info", "service": "user-service"}

Сохранение записи Данные ...

Запись данных сохранена.

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Я понял это !!!

Пн goose и MongoDB работали правильно. Проблема была в присвоении массива currentWeather. Я помещал новые данные в массив вместо замены. Поэтому мой скрипт постоянно помещал currentWeather[0] в мою БД, поэтому он будет работать один раз, а не снова.

0 голосов
/ 18 января 2020

Ошибка говорит вам db disconnected, происходит то, что вы не ждете обещания, возвращенного функцией updateOne.

Вы должны добавить туда await, чтобы это исправить.

await db.connect()
    .then(async (error) {
       logger.error(error)
       console.log('Saving Weather... '+mongoose.connection.readyState) //"Saving Weather...1"

       await Weather.updateOne({date: update.date}, 
                   ... )

    }).then((res, error)=>{
       if(error){
          logger.error(error)
       }
       db.disconnect();
   })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...