最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何创建用户特定的MongoDB集合?

IT培训 admin 6浏览 0评论

如何创建用户特定的MongoDB集合?

我想这是超过一个特定的编码问题,程序问题的,但我有一个节点的应用和现在用的是日历DHTMLX它的工作。我想,每个用户都有事件的单独的一个集合他们的具体日程。

现在我实现它的方式,每个人都看到相同的日历,并且可以对其进行编辑。我希望它这样每个用户都有自己的编辑日历。我怎样才能做到这一点?我试着用req.user但应用程序崩溃说是没有定义REQ。我非常新的JavaScript,所以我可能做这完全错了。

任何帮助表示赞赏,谢谢!

这里是我的app.js,我已经实现了日历的部分:

    var db = require('mongoskin').db("myAtlasClusterLink", { w: 0});
    db.bind('event');


    app.use(express.static(path.join(__dirname, 'public')));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));

    app.get('/init', function(req, res){
        db.event.insert({ 
            text:"My test event A", 
            start_date: new Date(2018,8,1),
            end_date:   new Date(2018,8,5)
        });
        db.event.insert({ 
            text:"My test event B", 
            start_date: new Date(2018,8,19),
            end_date:   new Date(2018,8,24)
        });
        db.event.insert({ 
            text:"Morning event", 
            start_date: new Date(2018,8,4,4,0),
            end_date:   new Date(2018,8,4,14,0)
        });
        db.event.insert({ 
            text:"One more test event", 
            start_date: new Date(2018,8,3),
            end_date:   new Date(2018,8,8),
            color: "#DD8616"
        });

        res.send("Test events were added to the database")
    });


    app.get('/data', function(req, res){
        db.event.find().toArray(function(err, data){
            //set id property for all records
            console.log(err);
            for (var i = 0; i < data.length; i++)
                data[i].id = data[i]._id;

            //output response
            res.send(data);
        });
    });


    app.post('/data', function(req, res){
        var data = req.body;
        var mode = data["!nativeeditor_status"];
        var sid = data.id;
        var tid = sid;

        delete data.id;
        delete data.gr_id;
        delete data["!nativeeditor_status"];


        function update_response(err, result){
            if (err)
                mode = "error";
            else if (mode == "inserted")
                tid = data._id;

            res.setHeader("Content-Type","application/json");
            res.send({action: mode, sid: sid, tid: tid});
        }

        if (mode == "updated")
            db.event.updateById( sid, data, update_response);
        else if (mode == "inserted")
            db.event.insert(data, update_response);
        else if (mode == "deleted")
            db.event.removeById( sid, update_response);
        else
            res.send("Not supported operation");
    });
回答如下:

我没有看到有关当前用户的任何代码在这里..你需要的服务器,以区别于其他用户(如this package提供什么,例如),并为一组的路线,UI和客户端存储用户登录/注销,并与当前会话的标识发送请求。但是,这是一个完全不同的主题。

然后,您可以:

  • 存储所有的事件一样收集并添加一个字段告诉谁拥有哪些事件
  • 从每个日历用户的唯一数据(一些ID)得到一个集合名

在这里,我想一切都存储相同的集合中,因为它的数据的相同的“种”,它会更容易增加系统当/如果你想在用户之间共享事件。

如何创建用户特定的MongoDB集合?

我想这是超过一个特定的编码问题,程序问题的,但我有一个节点的应用和现在用的是日历DHTMLX它的工作。我想,每个用户都有事件的单独的一个集合他们的具体日程。

现在我实现它的方式,每个人都看到相同的日历,并且可以对其进行编辑。我希望它这样每个用户都有自己的编辑日历。我怎样才能做到这一点?我试着用req.user但应用程序崩溃说是没有定义REQ。我非常新的JavaScript,所以我可能做这完全错了。

任何帮助表示赞赏,谢谢!

这里是我的app.js,我已经实现了日历的部分:

    var db = require('mongoskin').db("myAtlasClusterLink", { w: 0});
    db.bind('event');


    app.use(express.static(path.join(__dirname, 'public')));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));

    app.get('/init', function(req, res){
        db.event.insert({ 
            text:"My test event A", 
            start_date: new Date(2018,8,1),
            end_date:   new Date(2018,8,5)
        });
        db.event.insert({ 
            text:"My test event B", 
            start_date: new Date(2018,8,19),
            end_date:   new Date(2018,8,24)
        });
        db.event.insert({ 
            text:"Morning event", 
            start_date: new Date(2018,8,4,4,0),
            end_date:   new Date(2018,8,4,14,0)
        });
        db.event.insert({ 
            text:"One more test event", 
            start_date: new Date(2018,8,3),
            end_date:   new Date(2018,8,8),
            color: "#DD8616"
        });

        res.send("Test events were added to the database")
    });


    app.get('/data', function(req, res){
        db.event.find().toArray(function(err, data){
            //set id property for all records
            console.log(err);
            for (var i = 0; i < data.length; i++)
                data[i].id = data[i]._id;

            //output response
            res.send(data);
        });
    });


    app.post('/data', function(req, res){
        var data = req.body;
        var mode = data["!nativeeditor_status"];
        var sid = data.id;
        var tid = sid;

        delete data.id;
        delete data.gr_id;
        delete data["!nativeeditor_status"];


        function update_response(err, result){
            if (err)
                mode = "error";
            else if (mode == "inserted")
                tid = data._id;

            res.setHeader("Content-Type","application/json");
            res.send({action: mode, sid: sid, tid: tid});
        }

        if (mode == "updated")
            db.event.updateById( sid, data, update_response);
        else if (mode == "inserted")
            db.event.insert(data, update_response);
        else if (mode == "deleted")
            db.event.removeById( sid, update_response);
        else
            res.send("Not supported operation");
    });
回答如下:

我没有看到有关当前用户的任何代码在这里..你需要的服务器,以区别于其他用户(如this package提供什么,例如),并为一组的路线,UI和客户端存储用户登录/注销,并与当前会话的标识发送请求。但是,这是一个完全不同的主题。

然后,您可以:

  • 存储所有的事件一样收集并添加一个字段告诉谁拥有哪些事件
  • 从每个日历用户的唯一数据(一些ID)得到一个集合名

在这里,我想一切都存储相同的集合中,因为它的数据的相同的“种”,它会更容易增加系统当/如果你想在用户之间共享事件。

发布评论

评论列表 (0)

  1. 暂无评论