Búsqueda de sitios web

javascript - Actualizando el valor de un objeto en node


Tengo una lista de objetos y no puedo recopilar todas las actualizaciones a la vez.

Code
let answers = {};

bot.on('message', (msg) => {
    var chatId = 1245454; // unique for each user
    var text = msg.text; // input text by user

    answers[chatId] = {
        name: '',
        symbol: ''
    }
    
    // if user type `a` we set name to `sam` (for testing purpose only)   
    if(text = 'a') {
        answers[chatId].name = 'sam';
    }

    // if user type `b` we set symbol to `@` (for testing purpose only)
    if(text = 'b') {
        answers[chatId].symbol = '@';
    }
}

El aspecto final de answers será como:

answers = {
    1245454: {
        name: 'sam',
        symbol: '@'
    },
    222222: {
        name: 'Tom',
        symbol: '!'
    },
    // and so on...
};
Issue

El problema es que cuando actualizo symbol, el valor de name volverá a su valor predeterminado y se convertirá en name: '',

example
// updating name
answers = {
    1245454 {
        name: 'sam',
        symbol: ''
    },
};

// updating symbol
answers = {
    1245454 {
        name: '',
        symbol: '@'
    },
};

// supposed to be
answers = {
    1245454 {
        name: 'sam',
        symbol: '@'
    },
};

¿Alguna sugerencia?

Respuesta #1

Verifica la existencia de answers[chatId] antes de crear el nuevo objeto vacío.

if (!answers[chatId]) {
  answers[chatId] = {
    name: '',
    symbol: ''
  }
}

Esto dejará los objetos answers existentes para actualizaciones.