我很难理解为什么我的回调会执行但不返回值。 data.itemId是控制台记录的,但似乎没有返回avatar.itemId。您是否无法返回新创建的文档的值?可以肯定的是我做错了。我已经读过this,但是我仍然不确定回调返回到哪里或为什么saveAvatarImage调用没有返回数据。
const Image = require("../model/Image");
const saveAvatarImage = async (uploadImage, id) => {
const fs = require("fs");
//Set image data
let options = { upsert: true, new: true, omitUndefined: true };
let update = {
timestamp: Date.now(),
img: {
data: fs.readFileSync(uploadImage.filepath),
contentType: uploadImage.mimetype,
},
};
let filter = { itemId: id };
let callback = function (err, data) {
if (err) console.log(err);
console.log(data.itemId);
return data.itemId;
};
//Create image in db
let avatar = await Image.findOneAndUpdate(filter, update, options, callback);
return avatar.itemId;
};
module.exports = { saveAvatarImage };
这有效
busboy.on("finish", async function () {
//check for upload
if (isEmptyObj(uploadImage))
return res.status(400).json({ error: "Something went wrong." });
//if image is for profile
if (formValues.type === "avatar") {
//////save image to database
// saveAvatarImage(uploadImage, id);
//Set image data
let options = { upsert: true, new: true, omitUndefined: true };
let update = {
timestamp: Date.now(),
img: {
data: fs.readFileSync(uploadImage.filepath),
contentType: uploadImage.mimetype,
},
};
let filter = { itemId: req.user._id };
//Create image in db
const avatar = await Image.findOneAndUpdate(
filter,
update,
options,
function (err, data) {
if (err) console.log(err);
console.log(data);
}
);
return res.json(avatar);
}
});
我想这样做。 (已解决)
busboy.on("finish", async function () {
//check for upload
if (isEmptyObj(uploadImage))
return res.status(400).json({ error: "Something went wrong." });
//if image is for profile
if (formValues.type === "avatar") {
//////save image to database
let avatar = await saveAvatarImage(uploadImage, req.user._id);
return res.json(avatar);
}
});
答案 0 :(得分:0)
在回调中,尝试:
let callback = function (err, data) {
if (!err && data) return data;
else console.log(err ? err : "Data not defined");
}
我假定您应该像现在一样返回整个data
对象,然后在avatar.itemId
之后执行await
。