Удалить поле из объекта с помощью Lodash - PullRequest
0 голосов
/ 01 июня 2018

Я хочу отправить атрибут данных на сервер API, только если метод add, если он delete, я не хочу отправлять свои данные.

У меня есть

var body =
{
    id: 1,
    method: method,
    params: [
        {
            data: {
                "key1" : "value1",
                "key2" : "value2",
                "key3" : "value3"
            },

            url: `/url/anything`
        }
    ],
    session: session,
    verbose: 1
};

Я пытался

if(method == 'delete') {
    _.pick(body.params[0], ['data']);
}

Я также пытался

if(method == 'delete') {
    _.pick(body.params[0],'data');
}

По какой-то причине я все еще вижу, что все еще отправляю data.

Как можно было бы отладить это?

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

если вы посмотрите на документацию по lodash pick , вы увидите, что он не изменяет исходный объект, а создает новый объект из свойств исходного объекта и возвращает новый объект, если выЕсли вы хотите удалить свойство data из исходного объекта, вы можете использовать метод unset из lodash , который удаляет свойство из объекта или набора реквизитов, также вы можете использовать оператор удаления

0 голосов
/ 02 июня 2018

использование _.assign:

var body =
{
    id: 1,
    method,
    params: [
        _.assign({url: `/url/anything`}, method === 'delete'
            ? null
            : {
                  data: {
                      "key1" : "value1",
                      "key2" : "value2",
                      "key3" : "value3"
                  }
              }
        ) 
    ],
    session,
    verbose: 1
};
0 голосов
/ 01 июня 2018

Возможно, вам понадобится это сделать.

if(method === 'delete') {
    body.params[0].data = undefined;
}

В этом случае мы удаляем все содержимое data, назначая undefined.

...