Código del lado del servidor
Aquí puede ver que este es mi código del lado del servidor y está debajo. He puesto mi código del lado del cliente y qué error se muestra. Y no puedo entender lo que está mal aquí
app.post("/service", async (res, req) => { const newService = req.body; const result = await databaseCollection.insertOne(newService); res.send(result); });Código del lado del cliente
fetch("http://localhost:5000/service", { method: "POST", // or 'PUT' headers: { "Content-Type": "application/json", }, body: JSON.stringify(data), }) .then((response) => response.json()) .then((result) => { console.log("Success:", result); }) .catch((error) => { console.error("Error:", error); }); };El error es
(node:5388) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '_id' of undefined at E:\htmll\Assignment_11\Server\myapp\node_modules\mongodb\lib\operations\common_functions.js:64:17 at Array.map (<anonymous>) at prepareDocs (E:\htmll\Assignment_11\Server\myapp\node_modules\mongodb\lib\operations\common_functions.js:63:17) at new InsertOneOperation (E:\htmll\Assignment_11\Server\myapp\node_modules\mongodb\lib\operations\insert.js:42:74) at Collection.insertOne (E:\htmll\Assignment_11\Server\myapp\node_modules\mongodb\lib\collection.js:149:64) at E:\htmll\Assignment_11\Server\myapp\index.js:37:47 at Layer.handle [as handle_request] (E:\htmll\Assignment_11\Server\myapp\node_modules\express\lib\router\layer.js:95:5) at next (E:\htmll\Assignment_11\Server\myapp\node_modules\express\lib\router\route.js:144:13) at Route.dispatch (E:\htmll\Assignment_11\Server\myapp\node_modules\express\lib\router\route.js:114:3) at Layer.handle [as handle_request] (E:\htmll\Assignment_11\Server\myapp\node_modules\express\lib\router\layer.js:95:5) (node:5388) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)app.post("/service", async (res, req) => { const result = await new databaseCollection(newService) await result.save() res.send(result); });Prueba este método.
puede usar el método save en lugar de insertOne primero para crear una instancia de su objeto agregando new databaseCollection(newService) . y después de eso llame al método save para insertar su colección
Use res.json en lugar de res.send para hacer que Content-Type sea del tipo JSON
Su código debería verse así:
app.post("/service", async (res, req) => { const newService = req.body; try { const service= await new databaseCollection(newService); const savedService=await service.save() res.status(200).json(savedService); } catch (err) { res.status(500).json(err); } });