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

标签 javascript mongodb

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

 _.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"';
}
  • 由于某种原因,他们在键中插入了引号。可能只是一个错误。
  • 他们在条件语句中分配key,而不是进行比较。这将产生始终执行 if block 中的代码的效果,因为分配和返回的字符串始终为真。
  • 它们出现在键及其值已通过 obj[key] = filter[1] 分配给对象之后。由于 if 语句执行时赋值已经运行,因此它们没有机会影响赋值中使用的键。

另外,这一行:

var key = `${filter[0]}`;

可以简化,因为它与:

var key = filter[0];

或者使用 let 和解构甚至更好:

let [key] = filter;

关于javascript - 如何在形成 javascript 对象时删除引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44172279/

相关文章:

javascript - 如何在 Headless Chrome 中将 session cookie 从一个选项卡传递到另一个选项卡

mongodb - 出现重复 key 错误 dup key : { : undefined }

javascript - Sails.js:将一对多关联模型插入 MongoDB

node.js - 使用 Express.js 显示来自 MongoDB 的日期

mongodb - 在 Windows 上仅安装 Mongo Client/Shell - 不安装 MongoDB

node.js - 从两个集合填充

javascript - jquery插件内部的递归调用

javascript - 仅从网页中提取文本内容

Javascript 日期对象基于什么

javascript - 将文本文件加载和读取到 HTML/JavaScript