Graphql Apollo Server + Vue => Загрузка изображения - PullRequest
0 голосов
/ 28 ноября 2018

Я использую Vue с vue-apollo во внешнем интерфейсе и автономный Apollo Server 2 graphql с mongodb через mongoose в бэкэнде.У меня есть простое приложение для блога, в котором посты также имеют изображение.Все отлично работает, кроме загрузки изображений.Я хочу, чтобы изображения загружались в мою локальную файловую систему в папке на моем бэкэнде, и только путь к изображению сохранялся в моем документе mongodb.

мутация:

 async createPost(parent, args, context, info) {
         //...
        const {stream, filename} = await args.img

        const img_path = await upload({stream, filename})

        const post = await Post.save({
            //img is a string in my mongo model
            img: img_path,
            author_name: args.user.username,
            author_email: args.user.email
        });
    }

загрузкаметод, который должен возвращать путь и сохранять изображение в local:

const upload = ({ stream, filename }) => {
  const id = shortid.generate()
  const path = `${UPLOAD_DIR}/${filename}-${id}`
  new Promise((resolve, reject) =>
  stream
  .pipe(fs.createWriteStream(filename))
  .on("finish", () => resolve(path))
  .on("error", reject(Error))
);
}

Ошибка, которую я получаю, заключается в том, что поток и имя файла не определены при вызове upload (), но args.img является объектом, если я его регистрирую.И загрузка их в мою локальную папку тоже не работает.Любая помощь оценивается и помечается как принятый ответ

...