@Annalana

Не получается сделать ожидание ответа с консоли в Node, как это реализовать?

Добрый день!
Пишу учебный сайт. Столкнулась с проблемой при попытке сделать скрипт для управления данными. Этот должен считывать с консоли входные данные, и отправлять их в МонгоДБ. На данный момент код запускается, но вместо того чтобы дожидаться ответа, сразу выдает следующий prompt. Пыталась использовать onmessage и использовать message как первый параметр для on - не сработало.
Можно ли сделать как-то, чтобы он ждал события отправки строки в консоль? Интересует именно часть ввода с консоли, дальше могут быть какие-то ошибки, так как не тестировано, это уже не принципиально - исправлю:)
Спасибо!
const mongoose = require("mongoose");
mongoose.connect("mongodb://***", {useUnifiedTopology: true, useNewUrlParser: true})
const db = mongoose.connection;
const MODELS = require("../bd_config/Models.js");
let readline = require('readline'); 
let rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    terminal: false,
    prompt: '>'
});
let test = true;
function prompt_await(text){
    console.log(text);
    rl.prompt();
  
    rl.on(`line`, (input) => {
        if(input != ""){            
            rl.close();
            return input;    
        }else{
            process.exit();
            return NaN
        }
       });
};
let c_id, c_name, category;

while (test = true) {
    c_id = prompt_await("Введите ID категории, на английском");
    c_name = prompt_await("Введите имя категории для пользователей (на русском)");  
    category = {category_name: c_id, category_name_for_user: c_name};
    if (c_id = NaN && c_name != Nan){
        test = false;
    }else{
        MODELS.Category.create(category).then(
            function(result){
                console.log(result);
                },
            function(error){
            console.log(error)
            });
    }   
}
process.exit(1);
  • Вопрос задан
  • 345 просмотров
Решения вопроса 1
@dispache
Удобная обертка над readline - https://www.npmjs.com/package/console-read-write ,
позволяющая использовать async/await
const io = require('console-read-write'); 
io.write('Введите ИД категории');
let x = await io.read(); // тут ожидаемый ввод в консоль
console.log(x);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы