I have an error when i try to post this schema data into Form.js. Mongoose schema looks like this:
JavaScript
x
16
16
1
const postSchema = mongoose.Schema({
2
title: String,
3
message: String,
4
creator: String,
5
tags: [String],
6
selectedFile: String,
7
likeCount: {
8
type: Number,
9
default: 0
10
},
11
createdAt: {
12
type: Date,
13
default: new Date()
14
},
15
});
16
Logic for creating post is like this:
JavaScript
1
14
14
1
export const createPost = async (req, res) => {
2
const post = req.body;
3
4
const newPost = new PostMessage(post);
5
6
try {
7
await newPost.save();
8
9
res.status(201).json(newPost);
10
} catch(error){
11
res.status(409).json({ message: error.message });
12
}
13
}
14
I’m uploading image as String and I’m converting image using base64 from React like this-
JavaScript
1
3
1
import FileBase from 'react-file-base64';
2
<div className={classes.fileInput}><FileBase type="file" multiple="false" onDone={(base64) => setPostData({ postData, selectedFile: base64})}/></div>
3
When I try to submit form, I get error like – {“message”:”PostMessage validation failed: selectedFile: Cast to string failed for value
Advertisement
Answer
Found the answer, I was missing {} brackets aroung hte base64 after the onDone. so it should be like:
<div className={classes.fileInput}><FileBase type="file" multiple={false} onDone={({ base64 }) => setPostData({ ...postData, selectedFile: base64 })} /></div>