I’m working on creating a WhatsApp clone and implementing a file sharing feature. Everything was going smoothly until I encountered this error that’s causing my backend to crash. The strange thing is, I can see the file in MongoDB, but the error persists. I’m hoping someone can help me troubleshoot this issue.
Here’s a summary of what’s happening:
I have a file sharing feature in my WhatsApp clone app.
When a user tries to share a file, it’s saved to MongoDB.
I can confirm that the file exists in the MongoDB database.
However, the backend crashes with an error that I can’t seem to resolve.
I’m not sure where to begin troubleshooting this issue. Can anyone provide insights on what might be causing this problem? Is there a common mistake I might be making when dealing with file sharing in a MongoDB database?
i cant post all my code here my question will be too long [here is my github link][1]
api.js
export const uploadFile = async (data) => {
try {
return await axios.post(`${url}/file/upload`, data);
} catch (error) {
console.log('Error while calling uploadfile API ', error);
}
}
controller
const url = 'http://localhost:8000';
export const uploadFile = async(request, response)=>{
if(!request.file){
return response.status(404).json("file not found")
}
const imageUrl = `${url}/file/${request.file.filename}`;
return response.status(200).json(imageUrl);
}
route.js
//Route for file upload
route.post('/file/upload', upload.single("file"), uploadFile);
error
C:UsersuserOneDriveDocumentswebdevwhatsapp clone selfservernode_modulesmulter-gridfs-storagelibgridfs.js:306
id: f._id,
^
TypeError: Cannot read properties of undefined (reading '_id')
at GridFSBucketWriteStream.emitFile (C:UsersSiddhOneDriveDocumentswebdevwhatsapp clone selfservernode_modulesmulter-gridfs-storagelibgridfs.js:306:31)
at GridFSBucketWriteStream.emit (node:events:526:35)
at finish (node:internal/streams/writable:807:10)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
Node.js v20.9.0
[nodemon] app crashed - waiting for file changes before starting...
2
Answers
Title: Solution for multer-gridfs error "TypeError: Cannot read properties of undefined (reading ‘_id’)"
Answer:
It appears that you’re encountering an issue with multer-gridfs that could be related to compatibility with your MongoDB version. To resolve this problem, consider downgrading your MongoDB version to one that is compatible with multer and multer-gridfs. Here’s a step-by-step guide:
1. Uninstall MongoDB:
2. Install Compatible Version (e.g., 5.9.1):
This should help resolve the "TypeError: Cannot read properties of undefined (reading ‘_id’)" issue you’re facing. Ensure to restart your Node.js application after making these changes.
Additionally, it’s essential to check the compatibility matrix of multer-gridfs with MongoDB versions. Upgrading or downgrading packages can sometimes introduce other compatibility issues, so it’s recommended to review the documentation and release notes for both multer-gridfs and MongoDB.
If the problem persists or if you encounter any other issues during the process, feel free to provide more details or ask for further assistance.
Its seems that the multer is not compatible with the latest mongodb so
in your backend folder
install the mongodb version 5.9.1
npm i [email protected]
for more info see
https://github.com/devconcept/multer-gridfs-storage/issues/560