Как сохранить объект node.js из пакета npm в mongodb - PullRequest
2 голосов
/ 02 апреля 2019

Я новичок в nodejs. Я использую merkle-tools в моем метеорологическом приложении. Я создаю объект класса MerkleTools.

var merkleObj = new MerkleTools();

Можно ли сохранить этот объект merkleObj в MongoDB? Таким образом, по требованию я могу извлечь сохраненный объект из БД и вызвать его функцию, например, addLeaf() и т. Д.

1 Ответ

2 голосов
/ 02 апреля 2019

Дерево должно быть сериализовано, прежде чем вы сохраните его в базе данных.Библиотека, которую вы используете, не имеет такой опции, но вы можете легко сделать это самостоятельно.

В следующем коде предполагается, что вы используете этот модуль 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().

...