Node.jsstring里面的javascript对象参数

我真的不知道如何命名这个问题,但本质上我正在使用Mongoose包的MongoDB和function不起作用。 有问题的function是:

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

这使我可以在数据库中search属性'name' 。 但是,如果我尝试将'name'作为variables传递,则该函数不起作用。 例如,这不起作用:

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

如何在使属性参数variables的同时调用findOne()函数,即可以传入'name''age''city'等。

您可以在将其传递给函数之前创build该对象,并使用[]表示法指定dynamic属性:

 var query = {}; var attr = 'city'; var val = 'Miami'; // set the dynamic property query[attr] = val; // { city: 'Miami' } model.findOne(query, callback) 

或者在ES6中(如果您使用的是Babel),您可以直接使用Computed Property Name(计算属性名称)

 const attr = 'city'; const val = 'Miami'; const query = { [attr]: val }; // { city: 'Miami' } model.findOne(query, callback);