Интеграция mongoDB в проект транзакции «умный контракт» - PullRequest
0 голосов
/ 28 февраля 2019

Я создал несколько смарт-контрактов в сочетании с пользовательским интерфейсом, которые позволяют пользователю переводить токен erc-20 в свою учетную запись.Я пытаюсь сохранить данные транзакции в базе данных mongoDB (адрес учетной записи пользователя, переданные токены и хэш транзакции).Я использую Node.js и у меня установлены следующие зависимости:

"devDependencies": {
"express": "^4.16.4",
"lite-server": "^2.3.0"}
`"dependencies": {
"body-parser": "^1.18.3",
"missing": "0.0.1",
"mongodb": "^3.1.13",
"mongoose": "^5.4.14",
"request": "^2.88.0"}`

У меня есть файл app.js, который содержит все команды, необходимые для выполнения функций интеллектуального контракта, и у меня есть mongo.jsфайл, который обрабатывает мои сообщения базы данных.Мне удалось получить необходимые данные транзакции из файла app.js и, используя форму в HTML (мой файл index.js), перенаправить их на локальный сервер, на котором размещен мой mongoDB, который затем отправляет данные на мойбаза данных.См. Ниже:

Моя HTML-форма:

<form id="postDetails" method="post" action="http://localhost:3002/addname" >
<input type="hidden" id="Buyer,Amount,TxHash"  name="Buyer,Amount,TxHash" 
 value="" />
</form>

Вызовите файл app.js, где App.storedDetails содержит информацию о моем покупателе, сумме, TxHash:

document.getElementById('Buyer,Amount,TxHash').value = App.storedDetails;

Выполнена функция post в моем файле mongo.js:

app.post('/addname', function (req, res) {
MongoClient.connect(url, { useNewUrlParser: true },function(err, db) {
 if (err) throw err;
 var dbo = db.db("node-demo");
 dbo.collection("users").insertOne(req.body);
 db.close();
});

Моя проблема заключается в том, что передача данных через мой файл index.js небезопасна, и я хочу иметь возможность публиковать информацию о транзакциях напрямуюиз моего app.js.Т.е. я хочу объединить мои mongo.js и app.js в одно.У меня есть следующие объявления в моем файле mongo.js, чтобы инициализировать использование mongoDB и позволить моим функциям GET и POST работать:

    var express = require('express');
    var app = express();
    console.log("FOUND EXPRESS");
    var port = '3002';
    var bodyParser = require('body-parser');
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));
    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/node-demo";
    var mongoose = require("mongoose");
    mongoose.Promise = global.Promise;
    var dbConn = mongoose.connect("mongodb://localhost:27017/node-demo", 
         {useNewUrlParser: true });

Если я просто попытаюсь скопировать код из моего файла mongo.jsв мой файл app.js (включая вышеуказанные объявления) я получаю сообщения об ошибках, которые не найдены.Пример ошибки приведен ниже:

Uncaught Error: Cannot find module 'express'

Я понимаю, что обычно это происходит из-за неправильной установки express, но я убедился, что он установлен по правильному пути.Мой файл mongo.js находится по тому же пути, что и мой файл app.js, и я не получаю ошибок при запуске файла mongo.js.

Я запускаю свой проект с помощью следующей команды:

npm run dev

Используется облегченный сервер devDependency.Поэтому я попытался установить 'express' как devDependency вместо обычной зависимости, но она все равно не работала.Если я запускаю файл app.js с помощью следующей команды:

node app.js

, то модули будут найдены (что еще раз подтверждает, что все модули установлены правильно).

Мой последний вопрос:это: как мне интегрировать мой файл mongo.js в мой файл app.js, чтобы я мог выполнять все сообщения mongoDB и получать функции прямо из моего app.js.Я прошу прощения за длинный пост, но был бы очень признателен за любую помощь.

Если есть какой-то код или информация, которую я пропустил, которая имеет отношение к решению этой проблемы, пожалуйста, дайте мне знать, и я предоставлю ее.

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...