【问题标题】:How to update in-memory variable in NodeJS?如何更新 NodeJS 中的内存变量?
【发布时间】:2023-04-03 07:50:01
【问题描述】:

假设我有一个变量var loli = [ { pop: true}, {pup: false } ]

然后,我有一条路由可以生成类似 loli.push(req.boy) 的内容,以及另一条响应 loli 数组的路由,例如 res.json(loli)

我在 Stack、Node Docs 上搜索了一些问题,但不知道为什么。但我的 res.json(loli) 只是发送原始数组,甚至认为它已经改变了。

我可以观察这个 var 的变化或告诉 Node 不要缓存或不做它正在做的任何事情吗?

【问题讨论】:

  • 这取决于变量的定义位置以及函数如何访问它 - 通过范围或作为参数。如果不了解您的工作方式,就无法诊断您的问题。
  • 节点不保留请求之间的变量状态。每次您访问服务器时,loli 都会使用您硬编码为分配给它的任何内容重新初始化。
  • 如果变量是在请求函数之外定义的,则不是这样
  • 如果您能展示一个演示您的问题的最小代码示例,那将非常有帮助。
  • 是的,我在做假设。可能应该等待一些代码。

标签: javascript json node.js


【解决方案1】:

如果没有看到存在问题的可运行代码,很难准确地说出哪里出了问题,但这里有一些代码可以满足您的要求。启动它,然后转到http://localhost:3000/show 以查看对象的初始值,然后转到http://localhost:3000/push/foo 将字符串值“foo”推送到数组中,然后再次转到http://localhost:3000/show 以查看它的存在。

var express = require('express');
var app = express();

var loli = [ { pop: true}, {pup: false } ]

app.get('/push/:boy', function (req, res) {
  loli.push(req.params.boy);
  res.send('Pushed!');
});

app.get('/show', function (req, res) {
  res.json(loli);
});

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});

【讨论】:

  • 现在试试。谢谢你的回答。
猜你喜欢
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 2015-12-09
  • 1970-01-01
  • 2019-12-17
相关资源
最近更新 更多