将JSON POST数据存储在数组中(NodeJS)

时间:2014-02-04 21:11:31

标签: javascript arrays json node.js

我希望能够将用户生成的JSON对象发布到NodeJS服务器,并将它们存储在一个数组中,以便刷新页面不会影响数据。然后我希望能够将信息读回到表中,以便它不断反映数组的内容。

NodeJS有可能吗?如果是这样,有人可以给我指向正确的方向吗?我能够传递JSON对象(作为req.body),但我不知道从哪里开始。

谢谢!

1 个答案:

答案 0 :(得分:0)

正如Sri建议的那样,您应该明确地将数据阵列存储到数据库中。 使用Redis,Mongo,MySQL ......它更依赖于您的数据形状和使用方式。

如果你只需要存储临时数组(暂时,我的意思是“只要浏览会话”或“只要服务器启动”),你就可以将数据存储在内存中。

例如ExpressJs:

var express = require('express');
// in memory storage
var data = [];


var app = express()
  .use(express.bodyParser())
  .use(express.cookieParser())
  .use(express.cookieSession({secret:'sample'}))

  .post('/data', function(req, res){
    // do not need session, just memmory ? use this line
    // data.push(req.body);
    // creates the session if needed, and store data
    if (!req.session.data) {
      req.session.data = [];
    }
    req.session.data.push(req.body);
    res.send(204);
  })

  .get('/data', function(req, res){
    res.setHeader('Content-Type', 'application/json');
    // stored in session ?
    res.send(req.session.data || []);
    // stored in memory ?
    // res.send(data);
  })

  .listen(80);

-----编辑-----

要添加新数据并在单个请求中返回,只需在POST响应中发送数组:

  .post('/data', function(req, res){
    // store in memory
    data.push(req.body);
    // send it back, updated, in json
    res.setHeader('Content-Type', 'application/json');
    res.send(data);
  })

有一个假设:你应该用ajax调用来调用你的帖子,而不是常规的HTML表单。请参阅jquery.Ajax doc以获取已解析的服务器结果。