在每个POST请求NodeJS + Mongoose上创建新集合

时间:2016-09-12 07:15:22

标签: node.js mongodb express mongoose

如何在基于NodeJS express + mongoose的REST API上的每个POST请求上创建新集合?

有许多教程使用相同的硬编码集合,但找不到允许在每个新POST上创建新集合的教程。

例如: model.js

var mongoose = require('mongoose');
var mySchema = new mongoose.Schema({
       //Scehma Here
});
module.exports = mongoose.model('mycollection', mySchema);

server.js

var devices = require('./model');
router.route('/devices')
  .post(function(req, res) {
    var device = new devices();
        device._id = req.body.id;
        device.save(function(err) {
            if (err)
              res.send(err);
            res.json({ message: 'Success!' });
        });
  })

这会在mycollection为每个新POST

创建新文档

但是,我需要将创建的每个新对象隔离到一个新集合中。

是否可以在每个POST上创建一个新集合,其中相同的架构和集合名称为req.body.id

更新

用于@chridam和@MykolaBorysyuk的评论

数据将来自许多物联网设备的时间序列数据。

在第一次连接时,设备会发出POST请求,其ID类似IMEI,然后它会每5秒连续发送一次数据。 存储类似这样的内容:http://blog.mongodb.org/post/65517193370/schema-design-for-time-series-data-in-mongodb

我认为为每个设备创建一个新的集合将是一个好主意,如果这是一个糟糕的选择(我是DevOps和开发新手),请为我提出一个更好的方法来处理上述用例。这将是100个具有连续时间序列数据的设备。

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为@MykolaBorysyuk的建议是有效的,但是如果您想使用capped collections来限制每个设备将保留的文档数量,那么最好使用单独的集合。