一个调查网站,Node.js数据收集anamoly on heroku

时间:2017-09-25 16:30:40

标签: node.js mongodb express heroku web-deployment

我正在一个包含表格的网站上工作。 我的要求是收集每个用户的所有表单数据。

这是一个资金紧张的学术项目,因此我使用的是heroku免费服务器空间。

我选择了node.js表达框架。 创建了一个简单的表单,并在提交时,它将json写入该文件。以下是代码。

//require the express nodejs module
var express = require('express'),
    //set an instance of exress
    app = express(),
    //require the body-parser nodejs module
    bodyParser = require('body-parser'),
    //require the path nodejs module
    path = require("path");

var fs = require("fs");

//support parsing of application/json type post data
app.use(bodyParser.json());

//support parsing of application/x-www-form-urlencoded post data
app.use(bodyParser.urlencoded({ extended: true })); 

//tell express that www is the root of our public web folder
app.use(express.static(path.join(__dirname, 'www')));

//tell express what to do when the /form route is requested
app.post('/form',function(req, res){
    res.setHeader('Content-Type', 'application/json');

    //mimic a slow network connection
    setTimeout(function(){

        res.send(JSON.stringify({
            firstName: req.body.firstName || null,
            lastName: req.body.lastName || null
        }));

        var fileContent = JSON.stringify(req.body);
        fs.writeFile("./sample.txt", fileContent, (err) => {
            if (err) {
                console.error(err);
                return;
            };
        console.log("File has been created");
        });

    }, 1000)

    //debugging output for the terminal
    console.log('you posted: First Name: ' + req.body.firstName + ', Last Name: ' + req.body.lastName);
});

app.set('port', (process.env.PORT || 5000));
app.listen(app.get('port'), function() {
  console.log("Node app is running at localhost:" + app.get('port'));
});

当我在localhost上运行它时,它可以很好地工作,创建一个文件。

但是当我在heroku上部署它,然后运行,然后克隆repo时,没有文件。

虽然这是低级问题,但在更高级别,我只想要一个具有动态表单和服务器空间的网页来收集这些数据。我不想花很多时间在这项活动上,因为我的实际工作是基于数据。我很确定github页面不起作用。我们集成了谷歌表单,它可以工作,但网页不是动态的。因此,我从高级别问题到特定低级别问题的具体问题是:

  1. 是否有用于创建网页和收集数据的框架? heroku是灵活的选择吗?数据生成不会很大,我们预计每周的数据量为20MB。

  2. 我是否必须连接mysql或mongoDB等数据库,然后才能收集数据?如果是的话,我是否可以通过快速教程演示任务的“hello world”?

  3. 在这个特定的问题中,出了什么问题,因为它按照我对localhost的方式工作。

  4. 我非常愿意接受新的建议,这可能与我目前的思考过程完全不同,但从长远来看,我可以省时间。感谢您的帮助..

0 个答案:

没有答案