如何在 mongodb 中存储来自 npm 包的 node.js 对象

How to store node.js object from npm package in mongodb

我是 nodejs 的初学者。我在我的流星应用程序中使用 merkle-tools。我正在创建 class MerkleTools.

的对象
var merkleObj = new MerkleTools();

是否可以将此对象 merkleObj 存储在 MongoDB 中?所以在需要的时候,我可以从数据库中检索存储的对象并调用它的函数,比如 addLeaf()

在将树存储到数据库之前必须对其进行序列化。您正在使用的图书馆没有这样的选项,但您可以轻松地自己做。

以下代码假定您正在使用此模块 https://www.npmjs.com/package/merkle-tools

序列化函数:

const serializeTree = (tree) => {
  const len = tree.getLeafCount();
  const serialized = [];

  for (let i = 0; i < len; i++) {
    // If you want to save binary data remove .toString('hex');
    serialized.push(tree.getLeaf(i).toString('hex'));
  }

  return serialized;
}

您将获得一个可以轻松存储在数据库中的数组。

从数据库中恢复树时,您可以执行以下操作:

const makeTree = (serialized) => {
  const len = serialized.length;
  const tree = new MerkleTools();

  for (let i = 0; i < len; i++) {
    tree.addLeaf(serialized[i]);
  }

  tree.makeTree();

  return tree;
}

makeTree 函数的返回值是一个 merkleTools 树,因此您可以使用 .addLeaf() 之类的方法。