mongoose 将值强制转换为字符串失败,提交表单时出错,使用React中的FileBase转换图像

8oomwypt  于 2022-11-13  发布在  Go
关注(0)|答案(2)|浏览(122)

当我尝试将此模式数据发布到Form.js中时,出现错误。Mongoose模式如下所示:

const postSchema = mongoose.Schema({
    title: String,
    message: String,
    creator: String,
    tags: [String],
    selectedFile: String,
    likeCount: {
        type: Number,
        default: 0
    },
    createdAt: {
        type: Date,
        default: new Date()
    },
});

创建帖子的逻辑是这样的:

export const createPost = async (req, res) => {
    const post = req.body;

    const newPost = new PostMessage(post);

    try {
        await newPost.save();

        res.status(201).json(newPost);
    } catch(error){
        res.status(409).json({ message: error.message });
    }
}

我以字符串形式上传图像,并使用React中的base64转换图像,如下所示-

import FileBase from 'react-file-base64';
<div className={classes.fileInput}><FileBase type="file" multiple="false" onDone={(base64) => setPostData({ ...postData, selectedFile: base64})}/></div>

当我尝试提交表单时,我收到类似-{“message”:“PostMessage验证失败:所选文件:将值强制转换为字符串失败

nnt7mjpx

nnt7mjpx1#

找到了答案,我在onDone后面的base64周围缺少了{}个括号。所以它应该是这样的:
<div className={classes.fileInput}><FileBase type="file" multiple={false} onDone={({ base64 }) => setPostData({ ...postData, selectedFile: base64 })} /></div>

mspsb9vt

mspsb9vt2#

您遗漏了onDone={({ base64 })base64前后的大括号。
是的,你必须添加{}到base64我测试了它,它工作!!!

相关问题