我想在express中编写一个路由/端点来处理ajax发布请求,并使用该路由/端点来更新json文件的数据

时间:2019-05-09 16:42:40

标签: javascript json express

我正在创建一个服务器,该服务器从目录中提取JSON数据并将其解析为可以通过$ .getJSON()在前端读取的文件。我的问题是如何更新前端文件中的数据,并查看文件本身中的更新?

我尝试使用ajax的post方法,但出现404错误。我发现我需要写一个“端点”来指向ajax URL。我在哪里放置此Javascript端点文件/如何在Express中编写它。

服务器代码:

const express = require('express');
const fs = require('fs');
const app = express();
var cors = require('cors');
var curl = require('curl');
var jsdom = require('jsdom');
app.use(cors());
app.use(express.static('public'));
app.set('view engine', 'ejs');
app.listen(3030, function () {
    console.log('Example app listening on port 3030!')
})
// Document

var dirBuf = Buffer.from('public/assets/jsonfiles')
fs.readdir(dirBuf, (err, files) => {
    if (err) {
        console.log(err.message);
    }
    else {
        var all = [];
        //files
        files.forEach(function(filename) {
            var txt = fs.readFileSync('public/assets/jsonfiles/' + filename);
            var filecontents = JSON.parse(txt)
            all = (all.concat(filecontents));
        })
        var back = JSON.stringify(all, null, 2)
        /* UNCOMMENT TO CREATE FRONT END FILE */
        //  fs.writeFileSync('public/assets/frontEndJSON/allrequests.json', back)
    }
});
app.post('/', function (req, res) {
    fs.writeFileSync('public/assets/frontEndJSON/allrequests.json', req.body)
})
app.get('/', function (req, res) {
    res.render('index')
});

前端Javascript代码(ajax请求)

var back = JSON.stringify(q.items, null, 2)
    $.ajax({
        type: 'POST',
        url: 'public/assets/js/controller.js',
        data: back,
        dataType: 'json'
    })
}

我的文件结构如下:

-project-folder
 -public
  -assets
    -FronendFiles
     -json file I read from and want to update
    -js
      -main.js
 -server.js 

0 个答案:

没有答案