I am Using Vercel Serverless funtions to make API Endpoints for Next.js application. I am Using MongoDB to store an Array of Objects.
I have this serverless function
// api/global/addlink.js
const MongoClient = require("mongodb").MongoClient;
const { ObjectId } = require("mongodb");
const client = new MongoClient(process.env.DB_URI, {});
export default async (req, res) => {
await client.connect();
const link = JSON.parse(req.body)["link"];
const query = { _id: ObjectId(JSON.parse(req.body)["_id"]) };
const result = await client
.db("myio_guests")
.collection("link_groups")
.findOneAndUpdate(query, {
$push: {
links: link,
},
});
res.json({
message: "link added successfully",
result: result,
});
await client.close();
};
This function Gives error every 2nd time it runs.
I tried 4 invocations, of the function using fetch post request from my frontend, but only 2 entries are saved those are 1st and 3rd entry. In case of 2nd and 4th invocation this error occured:
2021-01-26T14:14:18.964Z cae61486-ecb3-4726-aa8c-f8e95d9326ad WARN the options [servers] is not supported
2021-01-26T14:14:18.964Z cae61486-ecb3-4726-aa8c-f8e95d9326ad WARN the options [caseTranslate] is not supported
2021-01-26T14:14:18.964Z cae61486-ecb3-4726-aa8c-f8e95d9326ad WARN the options [dbName] is not supported
2021-01-26T14:14:18.964Z cae61486-ecb3-4726-aa8c-f8e95d9326ad WARN the options [srvHost] is not supported
2021-01-26T14:14:18.964Z cae61486-ecb3-4726-aa8c-f8e95d9326ad WARN the options [credentials] is not supported
2021-01-26T14:14:20.203Z cae61486-ecb3-4726-aa8c-f8e95d9326ad ERROR MongoError: topology was destroyed
at executeCommand (/var/task/node_modules/mongodb/lib/operations/db_ops.js:222:21)
at FindOneAndUpdateOperation.execute (/var/task/node_modules/mongodb/lib/operations/find_and_modify.js:107:5)
at executeOperation (/var/task/node_modules/mongodb/lib/operations/execute_operation.js:77:17)
at Collection.findOneAndUpdate (/var/task/node_modules/mongodb/lib/collection.js:1737:10)
at module.exports.lt9b.__webpack_exports__.default (/var/task/.next/serverless/pages/api/global/addlink.js:296:75)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async apiResolver (/var/task/node_modules/next/dist/next-server/server/api-utils.js:8:1)
at async /var/task/.next/serverless/pages/api/global/addlink.js:137:387
2021-01-26T14:14:20.203Z cae61486-ecb3-4726-aa8c-f8e95d9326ad ERROR MongoError: topology was destroyed
at executeCommand (/var/task/node_modules/mongodb/lib/operations/db_ops.js:222:21)
at FindOneAndUpdateOperation.execute (/var/task/node_modules/mongodb/lib/operations/find_and_modify.js:107:5)
at executeOperation (/var/task/node_modules/mongodb/lib/operations/execute_operation.js:77:17)
at Collection.findOneAndUpdate (/var/task/node_modules/mongodb/lib/collection.js:1737:10)
at module.exports.lt9b.__webpack_exports__.default (/var/task/.next/serverless/pages/api/global/addlink.js:296:75)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async apiResolver (/var/task/node_modules/next/dist/next-server/server/api-utils.js:8:1)
at async /var/task/.next/serverless/pages/api/global/addlink.js:137:387
2021-01-26T14:14:20.204Z cae61486-ecb3-4726-aa8c-f8e95d9326ad ERROR Unhandled Promise Rejection {"errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"MongoError: topology was destroyed","reason":{"errorType":"MongoError","errorMessage":"topology was destroyed","name":"MongoError","stack":["MongoError: topology was destroyed"," at executeCommand (/var/task/node_modules/mongodb/lib/operations/db_ops.js:222:21)"," at FindOneAndUpdateOperation.execute (/var/task/node_modules/mongodb/lib/operations/find_and_modify.js:107:5)"," at executeOperation (/var/task/node_modules/mongodb/lib/operations/execute_operation.js:77:17)"," at Collection.findOneAndUpdate (/var/task/node_modules/mongodb/lib/collection.js:1737:10)"," at module.exports.lt9b.__webpack_exports__.default (/var/task/.next/serverless/pages/api/global/addlink.js:296:75)"," at processTicksAndRejections (internal/process/task_queues.js:97:5)"," at async apiResolver (/var/task/node_modules/next/dist/next-server/server/api-utils.js:8:1)"," at async /var/task/.next/serverless/pages/api/global/addlink.js:137:387"]},"promise":{},"stack":["Runtime.UnhandledPromiseRejection: MongoError: topology was destroyed"," at process.<anonymous> (/var/runtime/index.js:35:15)"," at process.emit (events.js:326:22)"," at processPromiseRejections (internal/process/promises.js:209:33)"," at processTicksAndRejections (internal/process/task_queues.js:98:32)"]}
Unknown application error occurred
How Can I solve this Issue on serverless case like this?