Javascript 如何将字符串强制转换为对象?

Javascript 如何将字符串强制转换为对象?,javascript,node.js,mongodb,dereference,node-mongodb-native,Javascript,Node.js,Mongodb,Dereference,Node Mongodb Native,我有一段代码: var regex={"$regex":req.query.query,"$options":req.query.options } db.collection('coders', function(err, collection) { collection.find( {"name":regex} ).toArray(function(err, items) { res.send(items); }); }); 它工作得和预

我有一段代码:

var regex={"$regex":req.query.query,"$options":req.query.options }  

db.collection('coders', function(err, collection) {
    collection.find(

    {"name":regex}

    ).toArray(function(err, items) {
    res.send(items);
    });

});
它工作得和预期的一样好。现在我希望能够使用任意字段而不是“名称”,因此我测试了以下内容:

    var regex={"$regex":req.query.query,"$options":req.query.options }

    var field="\"notName\""

db.collection('coders', function(err, collection) {
    collection.find(

    {field:regex}

    ).toArray(function(err, items) {
    res.send(items);
    });

});

这是行不通的。使用变量调用collection.find()时出现了什么问题?正确的方法是什么?

您必须使用方括号表示法在调用外部构建
find
参数对象:

var toFind = {};
toFind[field] = regex;

db.collection('coders', function(err, collection) {
    collection.find(toFind).toArray(function(err, items) {
        res.send(items);
    });
});
试试这个变体

var regex={"$regex":req.query.query,"$options":req.query.options }
var field="notName";
db.collection('coders', function(err, collection) {
        var findExpression = {};
        findExpression[field]=regex;
        collection.find(findExpression).toArray(function(err, items) {
        res.send(items);
        });
});

var条件={};条件[字段]=正则表达式;收集。查找(条件)
不起作用。您只是创建了一个带有键“field”的对象文字,而不是
字段
变量的值(与OP相同)。