Estoy tratando de desarrollar una función de agregación de datos para una aplicación. El usuario debería poder ingresar un nombre y buscará en la colección de la base de datos ese nombre y devolverá la colección. Estoy tratando de implementarlo usando node.js pero estoy confundido sobre cómo pasar un parámetro para el nombre.
Controlador:
exports.DAFacility_author_search = (req, res) => { DAFacility.aggregate([ [ { '$match': { 'author': author } } ] ]).then((DAFacility) => { res.send(DAFacility); }) .catch((e) => { res.send(e); }); };Ruta:
router.get('/DAFacilityAuthor', DAFacilityController.DAFacility_author_search) Para el 'author': author estoy tratando de usar autor como el nombre de la variable pero no sé exactamente cómo estructurar el controlador y el enrutador para tomar un parámetro para que pueda recuperar un valor en el cartero. Cualquier ayuda seria genial Gracias
Supongo que su solicitud en cartero será algo como:
{ "author": "foo", ... } Cuando la API recibe su solicitud, el cuerpo está disponible en su objeto de solicitud en el controlador, por lo que, si desea utilizar el campo de author en su agregado, simplemente req.body.author req
Su controlador podría tener la siguiente estructura:
export const DAFacilityController = { DAFacility_author_search: (req, res) => { DAFacility.aggregate([ {'$match': {'author': req.body.author}} ]) .then((DAFacility) => { res.send(DAFacility); }).catch((e) => { res.send(e); }); }, DAFacility_another_method: (req, res) => {...}, }El enrutador está bien:
router.get('/DAFacilityAuthor', DAFacilityController.DAFacility_author_search); router.get('/DAFacilityAuthor/<something>', DAFacilityController.DAFacility_another_method);espero haber ayudado