javascript - JSON Stringify 忽略 Redis 发布上的嵌套对象

标签 javascript node.js json mongoose redis

我在后端使用 Redis 来扩展订阅。我正在使用 this在我的 javascript 代码之上实现 redis 的库。并为模型使用 Mongoose 。

在 redis 发布期间,我必须对从 mongoose 获得的对象进行字符串化。我在订阅端解析它们并且一切正常,直到对象中有一个嵌套对象需要被字符串化。

所以如果我的对象是这样的:

{ subtitle: '',
   description: '',
   checklists:
    [ { _id: 5cee450c0fa29d0b54275da0, items: [] },
      { _id: 5cee455c0c31785b0875e09d, items: [] },
      { _id: 5cee47dc6d32e72c6411ce2d, items: [] } ],
   attachments: [],
   labels: [],
   _id: 5ced1af26547233798f943f6,
   title: 'asfasf',
   box: 5cece1c3e6c3c13ff098658d,
   workflow: 5cece1cbe6c3c13ff0986591,
}

我收到:

{ cardUpdated:
    { 
      subtitle: '',
      description: '',
      checklists: [ [Object], [Object], [Object] ],
      attachments: [],
      labels: [],
      _id: '5ced1af26547233798f943f6',
      title: 'asfasf',
      box: '5cece1c3e6c3c13ff098658d',
      workflow: '5cece1cbe6c3c13ff0986591',
    } 
}

当我发布时,我使用以下行:

pub.publish(types.CARD_UPDATED,
          JSON.stringify(
            { cardUpdated: await getUpdatedCardStats(checklist.card) },
          ));

注意:我知道我在 {} 中包装了 stringify 的参数,如果没有它,嵌套对象将不会被忽略,但我需要这样做,因为我需要关键属性名称订阅结束,即我在多个地方使用具有不同 key 名称的发布命令。

有没有办法让嵌套对象字符串化?

编辑:事实证明,我在 Redis 的订阅端获得了正确的完整对象作为字符串,但实际上是 JSON.parse() 才是罪魁祸首。解析后,它完全忽略了嵌套对象。有什么办法可以避免这种情况吗?

最佳答案

尝试:

const value = JSON.stringify({
    cardUpdated: await getUpdatedCardStats(checklist.card)
});
pub.publish(types.CARD_UPDATED, value);

关于javascript - JSON Stringify 忽略 Redis 发布上的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56357072/

相关文章:

javascript - 防止多次点击触发

python - 如何通过 tweepy 将流式推文保存在 json 中?

java - MongoDB Java 驱动程序

javascript - JavaScript如何获取IP,人们在哪里使用代理?

javascript - AngularJS : pass data from controller to controller without factory, 服务或广播?

node.js - 使用 TypeORM 进行集成测试

node.js - 如何在 sequelize 中创建关系的对象?

javascript - PHP stringID 未从 echo 中读取 onclick

javascript - 将 id 属性分配给 li 不起作用

node.js - 为什么 Mongoose 总是在我的收藏名称末尾添加一个s