Узел — записать результат JSON в файл после обещания

Я использую запрос-обещание для получения данных из API. Мне нужно записать результаты в файл json. Следующий код ничего не записывает в файл.

var rp = require('request-promise');
rp(empOptions)
    .then(function (repos) {
        employees= repos;
        return new Promise(function(resolve, reject) {
            fs.writeFile('../employees.json', JSON.stringify(employees), function(err) {
                if (err) reject(err);
            });
        });
    })
    .catch(function (err) {
        // API call failed...
    });

Я пробовал это также, но это тоже не сработало.


person Luke    schedule 22.07.2017    source источник
comment
Вы проверили, содержит ли репозиторий данные в вашем методе .then?   -  person Kyle Richardson    schedule 22.07.2017
comment
Да, он содержит данные.   -  person Luke    schedule 22.07.2017
comment
Попробуйте удалить return new Promise. Вы все равно не возвращаете данные с помощью метода разрешения обещания. В этой ситуации fs.writeFile должен работать сам по себе.   -  person Kyle Richardson    schedule 22.07.2017
comment
Это уже пробовали, и это тоже не сработало.   -  person Luke    schedule 22.07.2017
comment
Вы пробовали что-то вроде var stringifiedJSON = JSON.stringify(employees);, а затем передавали переменную stringifiedJSON в метод fs.writeFile()?   -  person Kyle Richardson    schedule 22.07.2017
comment
Да, это тоже пробовал Кайл   -  person Luke    schedule 22.07.2017
comment
Ну, тогда извини, что не могу помочь. Нет ничего плохого в формате метода fs.writeFile(). Попробуйте этот пример fs.writeFile('message.txt', 'Hello Node.js', (err) => { if (err) throw err; console.log('The file has been saved!'); }); Это прямо из документации файловой системы. Замените «message.text» на место, где вы хотите сохранить файл, и посмотрите, работает ли он.   -  person Kyle Richardson    schedule 22.07.2017
comment
Использование ../employees.json фактически создало файл из папки проекта. На самом деле файл был создан и ранее. Спасибо, что прояснили это. Спасибо вам за помощь.   -  person Luke    schedule 22.07.2017
comment
Не за что, рад что разобрались!   -  person Kyle Richardson    schedule 22.07.2017


Ответы (1)


Лучший и простой способ записи в файл:

.then(function(results) {
    return new Promise(function(resolve, reject) {
        fs.appendFileSync('myurlss2.json', results, function(err) {
            if (err) reject(err)
            else resolve(results)
        })
    })
})
.then(function(results) {
    console.log("results here: " + results)
})
.catch(function(err) {
    console.log("error here: " + err)
});
person SafiUllah    schedule 03.06.2019
comment
Полный код: разрешить (результаты); } }); }); }).then (функция (результаты) { console.log (результаты здесь: + результаты) }). catch (функция (ошибка) { console.log (здесь ошибка: + ошибся); }); - person SafiUllah; 03.06.2019
comment
вместо добавления кода в комментарий лучше отредактировать ответ, - person dkb; 03.06.2019