Я новичок в узлах и реагирую, я строил API-интерфейсы для своих приложений. Я хочу добавить человека в базу данных с информацией json, а также URL-адрес загруженного изображения с busboy. Но я не могу понять, как это сделать, вы можете мне помочь? Это моя почтовая функция; e
xports.postGobohead = (req, res) => {
const noImg = "no-img.jpg";
const newGobohead = {
handle: req.body.handle,
imageUrl: `https://firebasestorage.googleapis.com/v0/b/${config.storageBucket}/o/${noImg}?alt=media`,
skills: req.body.skills,
email: req.body.email,
tel: req.body.tel,
title: req.body.title,
experience: req.body.experience,
twitter: req.body.twitter,
facebook: req.body.facebook,
linkedin: req.body.linkedin,
instagram: req.body.instagram,
resume: req.body.resume
};
db.collection("goboheads")
.add(newGobohead)
.then(doc => {
const resGobohead = newGobohead;
resGobohead.goboId = doc.id;
return res.json(resGobohead);
})
.catch(err => {
res.status(500).json({ error: "Birşeyler yanlış gitti" });
console.error(err);
});
};
Я установил другую функцию, которая обновляет первый "no-img" imageUrl. Но я хочу загрузить картинку в первую очередь. Это моя функция загрузки;
exports.uploadImage = (req, res) => {
const BusBoy = require("busboy");
const path = require("path");
const os = require("os");
const fs = require("fs");
const busboy = new BusBoy({ headers: req.headers });
let imageToBeUploaded = {};
let imageFileName;
busboy.on("file", (fieldname, file, filename, encoding, mimetype) => {
if (mimetype !== "image/jpeg" && mimetype !== "image/png") {
return res.status(400).json({ error: "Wrong file type submitted" });
}
//my.image.png => ['my','image','png']
const imageExtension = filename.split(".")[filename.split(".").length - 1];
//56465465845465.png
imageFileName = `${Math.round(Math.random() * 1000000000000).toString()}.${imageExtension}`;
const filepath = path.join(os.tmpdir(), imageFileName);
imageToBeUploaded = { filepath, mimetype };
file.pipe(fs.createWriteStream(filepath));
});
busboy.on("finish", () => {
admin
.storage()
.bucket()
.upload(imageToBeUploaded.filepath, {
resumable: false,
metadata: {
metadata: {
contentType: imageToBeUploaded.mimetype
}
}
})
.then(() => {
const imageUrl = `https://firebasestorage.googleapis.com/v0/b/${config.storageBucket}/o/${imageFileName}?alt=media`;
return db.doc(`/users/${req.user.handle}`).update({ imageUrl });
})
.then(() => {
return res.json({ message: "image upload succesfully" });
})
.catch(err => {
console.error(err);
return res.status(500).json({ error: err.code });
});
});
busboy.end(req.rawBody);
};
Так что, в основном, я пытаюсь заменить imageUrl на imageUrl функций uploadimage и поместить шаги busboy в функцию post. Но я не могу понять, как отправить запрос, и я пробую несколько данных формы, но я получил сообщение об ошибке: «Значение для аргумента« данные »не является допустимым документом Firestore. Невозможно использовать« undefined »в качестве значения Firestore (находится в поле»). "ручка") "Так что я застрял.