#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. рад помочь, приятель 🙂