将mongoDB集成到智能合约交易项目中

时间:2019-02-28 02:55:22

标签: javascript html node.js mongodb express

我创建了一些智能合约以及一个用户界面,该界面允许用户将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获取功能。对于冗长的帖子,我深表歉意,但非常感谢您提供的所有帮助。

如果我遗漏了一些与解决此问题有关的代码或信息,请告诉我,我会提供。

非常感谢!

0 个答案:

没有答案