为啥我不能将 PriorityQueue 存储到 MongoDB 中

Posted

技术标签:

【中文标题】为啥我不能将 PriorityQueue 存储到 MongoDB 中【英文标题】:Why can't I store a PriorityQueue into MongoDB为什么我不能将 PriorityQueue 存储到 MongoDB 中 【发布时间】:2020-10-27 19:38:15 【问题描述】:

最近我决定用优先队列替换数组,以便将我的用户作业列表存储到 MongoDB 中。我使用 NodeJS 和 ExpressJS 作为后端。我尝试存储的优先级队列来自一个外部包,可以通过在终端中运行以下命令来安装:

yarn add js-priority-queue

由于某种原因,优先级队列在将其存储到 MongoDB 之前可以完美运行。但是,下次我尝试将它从 MongoDB 中取出并使用它时,它的功能就丢失了。我在 Schema 中将其类型声明为 Schema.Types.Mixed。我做错了什么还是无法将实例化的类对象存储到 MongoDB 中?

【问题讨论】:

存储可能有效,阅读不多。 那么就没有办法阅读了吗? 你可以阅读,但你会得到存储在数据库中的数据。 【参考方案1】:

据我所知,当您在 MongoDB 中存储内容时,它们以二进制格式 (BSON) 的 扩展 JSON (EJSON) 形式存储

    const  EJSON  = require('bson');    
    const test = EJSON.stringify(a: new Date(), foo:function()console.log('foo');)
    console.log(test) // ""a":"$date":"2020-07-07T14:45:49.475Z""

所以任何类型的功能都会丢失。

【讨论】:

以上是关于为啥我不能将 PriorityQueue 存储到 MongoDB 中的主要内容,如果未能解决你的问题,请参考以下文章

为啥 PriorityQueue 的 toString 会乱序返回元素?

为啥我不能将字符串添加到结构中?

Rbx.Lua - 为啥我不能将 .txt 文件存储为表格?

为啥我不能将 PHP 类实例存储为 SESSION 变量

为啥不能配置 Azure 诊断以通过新的 Azure 门户使用 Azure 表存储?

为啥我不能将UTF写入RMS?