Как конвертировать readFileSyn c код в readFile? - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь преобразовать следующий код в fs.readFile? Я запускаю это на сервере узлов и мне нужно, чтобы он был asyn c. Я прочитал документацию по узлу, и мне было очень трудно следить за этим.

Я читаю файл и устанавливаю его в переменную, затем сохраняю его в базу данных (mon go). Я не могу найти способ асинхронно использовать fs.readFile и установить его в переменную.

Вот мой текущий нежелательный синхронный код:

  a.img.data = fs.readFileSync(path.resolve(__dirname + '/imgTest/image.png'));
  a.img.contentType = 'image/jpg';
  a._id = accountId;
  a.save(function (err, a) {
    if (err) throw err;
    console.log('saved img to mongo');
  })

Вот моя попытка, но это не не работает:

await fs.readFile(path.resolve(__dirname + '/imgTest/image.jpg'), function (err, data) {
    if (err) return console.error(err);
   a.img.data = data;
});
 a.img.contentType = 'image/jpg';
  a._id = accountId;
  a.save(function (err, a) {
    if (err) throw err;
    console.log('saved img to mongo');
  })

1 Ответ

1 голос
/ 13 января 2020

Вы смешиваете синтаксис. Обычная библиотека fs не работает с обещаниями, поэтому вы не можете использовать await, и вы выполняете всю работу в обратном вызове:

fs.readFile(path.resolve(__dirname + '/imgTest/image.jpg'), function (err, data) {
  if (err) return console.error(err);
  a.img.data = data;
  a.img.contentType = 'image/jpg';
  a._id = accountId;
  a.save(function (err, a) {
    if (err) throw err;
    console.log('saved img to mongo');
  })
});

или вы go маршрут Promises

const fsp = require("fs/promises");
try {
  const data = await fsp.readFile(path.resolve(__dirname + '/imgTest/image.jpg'));
  a.img.data = data;
  a.img.contentType = 'image/jpg';
  a._id = accountId;
  a.save(function (err, a) {
    if (err) throw err;
    console.log('saved img to mongo');
  })
} catch(err) {
  console.log(err);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...