Estoy tratando de construir una API falsa con json-server y tengo un problema. No sé si me estoy perdiendo algo o si simplemente me encontré con un error.
Básicamente, si envío un parámetro de URL cuando solicito datos recibidos como un solo objeto, puedo leer mi parámetro sin problemas cuando intento representar esos datos.
Pero si los datos que recibo son una matriz, me quedo indefinido al intentar leer ese parámetro.
Estos son mis archivos (no importa la lógica detrás de esto, simplifiqué las cosas para reducir la información innecesaria).
servidor.js
const jsonServer = require('json-server') const server = jsonServer.create() const router = jsonServer.router(require('./db.js')()) const middlewares = jsonServer.defaults() server.use(middlewares) server.use(jsonServer.bodyParser) router.render = (req, res) => { console.log("User try query: " + req.query.user) console.log("User try param: " + req.params['user']) if (req.url.startsWith('/slack_users_info')) { res.jsonp({ user: res.locals.data }) } else if (req.url.startsWith('/slack_users_info2')) { res.jsonp({ user: res.locals.data }) } else { res.jsonp(res.locals.data) } } server.use(router) // Run server on indicated port. server.listen(port = 3000, () => { console.log('JSON Server is running') console.log('http://localhost:' + port) })db.js
var faker = require('faker'); module.exports = function () { var data = { slack_users_info: slack_users_info(), slack_users_info2: slack_users_info2() } return data; } function slack_users_info() { subdata = [] for (var i = 0; i < 10; i++) { subdata.push({ id: "user_id_" + i, }) } return subdata; } function slack_users_info2() { subdata = { id: "user_id" } return subdata; } Estoy corriendo con npm start .
Si solicito la matriz, obtengo undefined: GET http://localhost:3000/slack_users_info?user=user_id_0 Luego obtengo:
User try query: undefined User try param: undefined Si solicito el objeto único, obtengo el parámetro esperado: GET http://localhost:3000/slack_users_info2?user=user_id_0 Luego obtengo:
User try query: user_id_0 User try param: undefinedEn ambos casos, el cuerpo de la respuesta se recibe correctamente, simplemente no puedo leer el parámetro en el primer caso.
¿Hay alguna razón para esto?
Mirando https://www.npmjs.com/package/json-server#generate-random-data parece que necesita devolver un objeto, pero puede incluir su matriz dentro de ese objeto.
Por ejemplo, intente:
function slack_users_info() { const data = { users: [] } for (var i = 0; i < 10; i++) { data.users.push({ id: "user_id_" + i, }) } return data; }