Я создал несколько смарт-контрактов в сочетании с пользовательским интерфейсом, которые позволяют пользователю переводить токен 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.Я прошу прощения за длинный пост, но был бы очень признателен за любую помощь.
Если есть какой-то код или информация, которую я пропустил, которая имеет отношение к решению этой проблемы, пожалуйста, дайте мне знать, и я предоставлю ее.
Большое спасибо!