Константа не отражается в функции - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть Node / Express / Mongoose API, где у меня есть функция, которая обрабатывает множественные обновления документа на основе идентификатора и параметра Type, которые я передаю ему.

Три параметра: type: в основном поле назначения в моем документе (т. Е. 'Linkedin', 'facebook' ...) id: идентификатор поля документа, который я пытаюсь обновить item: значение, которое я вставляю в обновление.

Первое, что я делаю, это создаю несколько констант для запроса:

  const sharedType = 'shared.' + type + '.item';
  const sharedTypeId = 'shared.' + type + '._id'
  const rootType = type + '.item';
  const rootTypeId = type + '._id'

Так, например,Я передам в: rootTypeId: 'linkedin', чтобы установить параметр запроса для linkedin, который приведет к константе 'linkedin._id', который будет содержать следующее:

Cards.update ({ rootTypeId: id}, {$ set: {rootType: item}}, {'multi': true}, функция (err, card) {err === null? Console.log ('Нет ошибок' + type +'updated for cards'): console.log ('Error:', err);})

, а затем у меня есть другой констант для rootType, который для linkedin будетв конечном итоге получаю имя «linkedin.name» для целевого поля элемента.

Моя проблема заключается в следующем ...

Если я жестко закодирую такие вещи: Cards.update ({'linkedin._id' : id}, {$ set: {

это работает.

Но использование констант не помогает, хотя они должны иметь одинаковые параметры.

Что я здесь не так делаю?

Спасибо !!

1 Ответ

0 голосов
/ 16 декабря 2018

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

Cards.update({ [rootTypeId]: id }, { $set: { [rootType]: item } }, { 'multi': true }, function (err, card) { err === null ? console.log('No errors ' + type + ' updated for cards') : console.log('Error: ', err); } )

Обычно rootTypeId и rootType должны быть заключены в квадратные скобки, поэтому значения внутри этих переменных становятся ключами в вашем объекте запроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...