我正在做一个小的业余爱好项目,在那里我真的需要一些意见和建议。
这是我的第一个“真正的”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)保存全局对象的信息。我也真的不喜欢这个。我不喜欢在我的代码中使用全局状态。
做这样的事情的好模式是什么?我的问题有意义吗?
提前感谢
发布于 2014-09-13 16:14:57
您可以对进行一个简单的REST调用,将活动批处理设置为,并在批处理启动并准备接受请求时在批处理内调用它。例如:
app.put('/active-batch', function(req, res, next){
// Make sure req.body is defined
app.set('active-batch', req.body);
res.end();
});
然后在代码中的任何地方都可以使用:
app.get('active-batch');
app.set允许您保存可在应用程序中全局访问数据,app.get允许您读取以前存储的数据。
https://stackoverflow.com/questions/25820924
复制相似问题