Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在形成javascript对象时删除引号?_Javascript_Mongodb - Fatal编程技术网

如何在形成javascript对象时删除引号?

如何在形成javascript对象时删除引号?,javascript,mongodb,Javascript,Mongodb,我正在创建一个要从mongodb查询的动态javascript对象,我的代码如下: _.each(separatedFilter, function (str) { const filter = str.split('='); console.log('filter is', JSON.stringify(filter)); if (filter[1] && filter[1].trim() !== '') {

我正在创建一个要从mongodb查询的动态javascript对象,我的代码如下:

 _.each(separatedFilter, function (str) {
        const filter = str.split('=');
        console.log('filter is', JSON.stringify(filter));
        if (filter[1] && filter[1].trim() !== '') {
            var key = `${filter[0]}`;
            var obj = {};
            obj[key] = filter[1];
            if (key = 'date.start:{$gte') {
                key = '"date.start":{"$gte"';
            }
            if (key = 'date.end:{$lt') {
                key = '"date.end":{"$lt"';
            }
            query.push(obj);
        }
    });
{ '$and':
   [ { name: [Object] },
     {},
     { '"date.start":{"$gte"': '2016-12-18T18:30:00.000Z',
       '"date.end":{"$lt"': '2016-12-18T18:30:00.000Z' }
     ] }
上面的代码创建一个对象,如下所示

 _.each(separatedFilter, function (str) {
        const filter = str.split('=');
        console.log('filter is', JSON.stringify(filter));
        if (filter[1] && filter[1].trim() !== '') {
            var key = `${filter[0]}`;
            var obj = {};
            obj[key] = filter[1];
            if (key = 'date.start:{$gte') {
                key = '"date.start":{"$gte"';
            }
            if (key = 'date.end:{$lt') {
                key = '"date.end":{"$lt"';
            }
            query.push(obj);
        }
    });
{ '$and':
   [ { name: [Object] },
     {},
     { '"date.start":{"$gte"': '2016-12-18T18:30:00.000Z',
       '"date.end":{"$lt"': '2016-12-18T18:30:00.000Z' }
     ] }
在上面的对象中,我可以在date.start和date.end的开始和结束处看到
'
。而我只是希望它是

   { '$and':
       [ { name: [Object] },
         {},
         { "date.start":{"$gte": '2016-12-18T18:30:00.000Z',
           "date.end":{"$lt": '2016-12-18T18:30:00.000Z' }
     ] }
不能通过键定义值(嵌套对象),也不能使用键(即
$gte
)部分定义没有值的对象

修复程序的外观如下所示:

if (key === 'date.start:{$gte') {
    obj['date.start'] = { '$gte' : null };
}
if (key === 'date.end:{$lt') {
    obj['date.start'] = { '$lt' : null };
}

obj[key] = filter[1];
这假设
null
将被程序中其他地方的适当时间戳替换,然后您可以在发送查询之前将该对象序列化为字符串

解释 这些线路存在许多问题:

if (key = 'date.start:{$gte') {
    key = '"date.start":{"$gte"';
}
if (key = 'date.end:{$lt') {
    key = '"date.end":{"$lt"';
}
  • 出于某种原因,他们在键中插入引号。可能只是个错误
  • 它们在条件语句中分配给
    ,而不是进行比较。这将产生始终在
    if
    块中执行代码的效果,因为分配和返回的字符串总是真实的
  • 它们位于已通过
    obj[key]=filter[1]
    分配给对象的键及其值之后。由于在
    if
    语句运行时分配已经运行,因此它们没有机会影响分配中使用的键
此外,这一行:

var key = `${filter[0]}`;
可以简化,因为它与以下内容相同:

var key = filter[0];
或者更好地使用
let
和分解:

let [key] = filter;
不能通过键定义值(嵌套对象),也不能使用键(即
$gte
)部分定义没有值的对象

修复程序的外观如下所示:

if (key === 'date.start:{$gte') {
    obj['date.start'] = { '$gte' : null };
}
if (key === 'date.end:{$lt') {
    obj['date.start'] = { '$lt' : null };
}

obj[key] = filter[1];
这假设
null
将被程序中其他地方的适当时间戳替换,然后您可以在发送查询之前将该对象序列化为字符串

解释 这些线路存在许多问题:

if (key = 'date.start:{$gte') {
    key = '"date.start":{"$gte"';
}
if (key = 'date.end:{$lt') {
    key = '"date.end":{"$lt"';
}
  • 出于某种原因,他们在键中插入引号。可能只是个错误
  • 它们在条件语句中分配给
    ,而不是进行比较。这将产生始终在
    if
    块中执行代码的效果,因为分配和返回的字符串总是真实的
  • 它们位于已通过
    obj[key]=filter[1]
    分配给对象的键及其值之后。由于在
    if
    语句运行时分配已经运行,因此它们没有机会影响分配中使用的键
此外,这一行:

var key = `${filter[0]}`;
可以简化,因为它与以下内容相同:

var key = filter[0];
或者更好地使用
let
和分解:

let [key] = filter;

我想你在这里加了一个引号--“date.start”:{“$gte”“
如何在形成javascript对象时删除引号?
停止放置引号in@JaromandaX为什么?有一个非常简单的答案我试图删除“”,但没有编译我认为你在这里加了一个引号
key='“date.start:{“$gte”“
如何在形成javascript对象时删除引号?
停止放置引号in@JaromandaX为什么?我已经尝试删除了一个非常简单的答案“”,但由于我认为我发现了另一个问题,因此无法再次编译更新。请注意,我的答案需要补充任何时间amp生成您正在使用的代码,因为您没有在问题中包含该代码,因此有必要完全修复您的问题。再次更新,因为我认为我发现了另一个问题。请注意,我的答案需要使用您正在使用的任何时间戳生成代码进行补充,因为您没有在问题中包含该代码,并且将被删除完全解决你的问题是必要的。