首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于避免全局状态的node.js架构建议

关于避免全局状态的node.js架构建议
EN

Stack Overflow用户
提问于 2014-09-13 15:31:18
回答 1查看 146关注 0票数 1

我正在做一个小的业余爱好项目,在那里我真的需要一些意见和建议。

这是我的第一个“真正的”node项目,我希望它能教会我很多关于node.js开发的知识。我白天是一名.net开发人员,并且已经从事了大约15年的专业工作。我也有过做Java的时候。我已经创建了一些小的node.js项目,用作微服务。

但这个项目不能再被归类为微服务;-)

该项目的目的是采样一些传感器数据,并做一些报告。这是我在大学里和PLC玩耍时产生的一个想法。我通过从可编程逻辑控制器采样,并使用ZeroMQ发出数据来做到这一点。然后,我的node.js服务器侦听此传感器数据,并将其存储在MongoDB中。

我在REST api中公开这些数据。REST api还公开了批处理等资源和身份验证等其他内容。在此基础上,我有一个AngularJS应用程序,用于创建定义UI。

真正让我恼火的一件事是,我想全局指定正在运行的批处理。我有一个批次集合,其中一个是正在运行的批次。我认为有两种方法可以做到这一点,这两种方法都说明了我在node.js世界中的新手身份。所有用户都应该能够看到正在运行的批处理,我也希望能够从代码中的任何地方轻松地辨别出来。

1)在Mongo中的对象上设置一个标志。这有很多问题。最明显的一个就是性能。我每秒接收10次传感器数据,我不想每次都询问数据库将其保存在哪个批次下。

2)保存全局对象的信息。我也真的不喜欢这个。我不喜欢在我的代码中使用全局状态。

做这样的事情的好模式是什么?我的问题有意义吗?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2014-09-13 16:14:57

您可以对进行一个简单的REST调用,将活动批处理设置为,并在批处理启动并准备接受请求时在批处理内调用它。例如:

代码语言:javascript
运行
复制
app.put('/active-batch', function(req, res, next){
    // Make sure req.body is defined
    app.set('active-batch', req.body);
    res.end();
});

然后在代码中的任何地方都可以使用:

代码语言:javascript
运行
复制
app.get('active-batch');

app.set允许您保存可在应用程序中全局访问数据,app.get允许您读取以前存储的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25820924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档