我创建了一些智能合约以及一个用户界面,该界面允许用户将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的本地服务器,然后将数据发布到我的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;
在我的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
这使用lite服务器devDependency。因此,我尝试将“ express”安装为devDependency而不是常规依赖项,但仍然无法正常工作。如果我使用以下命令运行app.js文件:
node app.js
然后找到模块(这进一步确认所有模块均已正确安装)。
我的最终问题是:如何将mongo.js文件集成到app.js文件中,以便执行所有mongoDB发布并直接从app.js获取功能。对于冗长的帖子,我深表歉意,但非常感谢您提供的所有帮助。
如果我遗漏了一些与解决此问题有关的代码或信息,请告诉我,我会提供。
非常感谢!