Использование переменных в Cradle Merge (Node.js и CouchDB)

Я пытаюсь написать функцию, которая зацикливает и изменяет поле в нескольких документах одновременно. Единственная проблема заключается в том, что, когда я передаю значение параметра, слияние в колыбели фактически передает поле с именем параметра вместо значения.

Например:

function saveToAll(field, data) {
  db.get('document_list', function (err, doc) {
      for (key in doc.doc_list_pure) {
        //Create a Closure
        (function(key1) {
          console.log(key1)
            //Go into the DB
            console.log(field);
            console.log(data);
             db.merge(key1, {
              field : data
            }, function (err, res) {
                console.log('Saved');
            });
         }
        )(key)
      }
});
}

Так что вот, если я напишу такую ​​функцию:

saveToAll("new_field", value);

Он будет регистрироваться правильно, но сохранит поле, буквально называемое "полем" с правильными данными. У кого-нибудь есть идеи, как к этому подойти? Это ошибка в колыбели или только я?

1 ответ

Решение

Попробуй это:

function saveToAll(field, data) {
  db.get('document_list', function (err, doc) {
      for (key in doc.doc_list_pure) {
        //Create a Closure
        (function(key1) {
          console.log(key1)
            //Go into the DB
            console.log(field);
            console.log(data);
            var dataObj = {};
            dataObj[field]=data;

            db.merge(key1, dataObj, function (err, res) {
                console.log('Saved');
            });
         }
        )(key)
      }
});
}
Другие вопросы по тегам