Estoy construyendo mi primer proyecto con node.js e intento almacenar la entrada del usuario con Map. Aquí está mi código y 2 entradas entrantes:
const command = new Map() let commadParam = ['userAccount', 'john'] // <- first input then it should be store for later use let account = 'userAccount-'+ commadParam[1] consolo.log(account) // 'userAccount-john' commadParam = ['charItem','BowJohn'] // <- simulate second input let char = 'charItem-' + commadParam[1] consolo.log(char) // 'charItem-BowJohn' command.set(account, account.split('-')[1]) command.set(char, char.split('-')[1]) console.log(command)// Map{'userAccount-john' => 'john', 'charItem-BowJohn' => 'BowJohn'}funciona bien cuando literalmente pongo 2 entradas como ejemplo, pero cuando ejecuto mi aplicación y escribo la primera entrada, luego de 1 segundo, escribo la segunda entrada, sobrescribo el primer mapa
¿Cómo almaceno la primera entrada con Map para su uso posterior (como 1-3 segundos más tarde) o debería usar DB para almacenar (como redis)? ¡Gracias!
Aquí está el código completo:
const replyMsg = async (reqBody, res) => { const reqBodyMsg = reqBody.events[0].type const command = new Map() if (reqBodyMsg === 'message') { let commandParam = reqBody.events[0].message.text.split(' ') let account = 'userAccount-' + commandParam[1] let char = 'charItem-' + commandParam[1] command.set(account, account.split('-')[1]) command.set(char, char.split('-')[1]) let accountName = command.get(account) let charName = command.get(char) //input user account for character list if (commandParam[0] === 'userAccount') { const dataString = await getChar(reqBody, res, accountName) console.log(dataString) } //input character name to get character equipment if (commandParam[0] === 'charItem') { // accountName = data.key[1] // console.log(commandParam[0]) // const charName = commandParam[1] const dataString = await getItem(reqBody, res, accountName, charName) console.log(dataString) } } }Declarar e inicializar el command fuera de la función. Entonces, si commandParam[1] es diferente, no debería sobrescribir los valores antiguos en el mapa.
No estoy seguro de por qué necesita accountName y charName , deberían ser iguales a commandParam[1] .
const command = new Map() const replyMsg = async(reqBody, res) => { const reqBodyMsg = reqBody.events[0].type if (reqBodyMsg === 'message') { let commandParam = reqBody.events[0].message.text.split(' ') let account = 'userAccount-' + commandParam[1] let char = 'charItem-' + commandParam[1] command.set(account, account.split('-')[1]) command.set(char, char.split('-')[1]) let accountName = command.get(account) let charName = command.get(char) //input user account for character list if (commandParam[0] === 'userAccount') { const dataString = await getChar(reqBody, res, accountName) console.log(dataString) } //input character name to get character equipment if (commandParam[0] === 'charItem') { // accountName = data.key[1] // console.log(commandParam[0]) // const charName = commandParam[1] const dataString = await getItem(reqBody, res, accountName, charName) console.log(dataString) } } }