Tengo el siguiente código .js al comienzo de mi función de Azure
module.exports = async function (context, messageObj) { context.log('Incoming Message: ', messageObj) const { user_name } = messageObj context.log('typeof messageObj: ', typeof messageObj) context.log('user_name: ', user_name) Sin embargo, el nombre de user_name permanece sin definir.
typeof messageObj: object user_name: undefined function.json:
{ "bindings": [ { "name": "messageObj", "type": "httpTrigger", "direction": "in", } ] } Mi pregunta es por qué el nombre de user_name no está definido y no se analiza, ¿qué me estoy perdiendo?
Salida de context.log('Incoming Message: ', messageObj):
Incoming Message: { method: 'GET', url: 'http://localhost:7071/api/HttpExample', originalUrl: 'http://localhost:7071/api/HttpExample', headers: { accept: '*/*', connection: 'keep-alive', host: 'localhost:7071', 'user-agent': 'PostmanRuntime/7.28.4', 'accept-encoding': 'gzip, deflate, br', 'content-type': 'text/plain', 'content-length': '5994', 'postman-token': '1f1e66c3-19b5-400a-94fb-a91283a53346' }, query: {}, params: {}, body: { ... user_name: 'some user', used_subscription: false, ... }messageObj en sí mismo no tiene ninguna clave user_name . Está tratando de desestructurarlo, pero no está allí, por lo que devolverá undefined (lo mismo que si hubiera intentado acceder directamente a él, a la messageObj.user_name ).
Parece, según la información que ha proporcionado, que en realidad está debajo del body :
const { user_name } = messageObj.body;En un ejemplo diluido:
const messageObj = { foo: 'bar', bar: 'foo', user: { user_name: 'the_user_name', foobar: 'barfoo' } } const { user_name } = messageObj.user; console.log(user_name);