Node.js строка внутри аргумента объекта javascript

#javascript #node.js #mongodb #mongoose

#javascript #node.js #mongodb #мангуст

Вопрос:

Я не совсем уверен, как назвать эту проблему, но, по сути, я использую пакет Mongoose для MongoDB, и функция не работает. Рассматриваемая функция:

 var value = 'onetwothree'
model.findOne({ 'name': value }, callback)
  

что позволяет мне искать атрибут в базе 'name' данных. Однако, если я попытаюсь передать 'name' в качестве переменной, функция не будет работать. Например, это не работает:

 var attribute = 'name'
model.findOne({ attribute: value}, callback)
  

Как мне вызвать findOne() функцию при создании переменной аргумента атрибута, т. Е. Я мог бы передать 'name' , 'age' , 'city' , и т.д.

Ответ №1:

Вы можете просто создать объект перед передачей его в функцию и назначить динамическое свойство, используя [] обозначение:

 var query = {};
var attr = 'city';
var val = 'Miami';

// set the dynamic property
query[attr] = val; // { city: 'Miami' }

model.findOne(query, callback)
  

Или в ES6 (если вы используете Babel) вы можете сделать это напрямую с помощью вычисляемого имени свойства:

 const attr = 'city';
const val = 'Miami';
const query = { [attr]: val }; // { city: 'Miami' }

model.findOne(query, callback);
  

Комментарии:

1. рад помочь, приятель 🙂