【问题标题】:mongo aggregate function is not working with socket iomongo 聚合函数不适用于套接字 io
【发布时间】:2019-04-06 15:52:33
【问题描述】:

您好,我正在尝试在套接字 io 函数中运行 MongoDB 查询。findOne 工作正常,但 find 和聚合函数根本不起作用。在此处输入代码

mongo.connect('mongodb://localhost:27017', function (err, client) {
    const db = client.db('dbName');

    const bookWalker = db.collection('bookwalkers');
    const walker = db.collection('walkers');


    io.sockets.on('connection', function (socket) {
        socket.on('enterRoom', function (data) {
            socket.room = data.room;
            socket.join(data.room);
            console.log("connected to room", data.room);

            bookWalker.find({"pendingWalk._id":
                   ObjectId("5bd994d2f395622e0b8f71af")},async function(err,resp)  {
                       console.log("dataf",resp);
                       io.sockets.in(data.room).emit('getStartTime', resp[0]);
             });
       });
 });

});

这是数据库中的示例数据

{
"_id" : ObjectId("5bd994d2f395622e0b8f71ad"),
"pendingWalk" : [ 
    {
        "walkPicture" : [],
        "status" : 0,
        "walkPath" : [],
        "_id" : ObjectId("5bd994d2f395622e0b8f71af"),
        "bookedDate" : ISODate("2018-10-31T13:30:56.581Z"),
        "bookedTime" : ""
    }
],
"userId" : ObjectId("5b6e932062bce05ae5647980"),
"book_dt" : ISODate("2018-10-31T11:41:06.230Z"),
"__v" : 0}

查询在 mongo shell 中运行良好。

【问题讨论】:

    标签: mongodb express socket.io


    【解决方案1】:

    mongodb find() 返回游标而不是数组。你必须调用 toArray() 函数。

        bookWalker.find({"pendingWalk._id":ObjectId("5bd994d2f395622e0b8f71af")}).toArray(function(err,resp){
         console.log(resp[0]);
    });
    

    【讨论】:

      猜你喜欢
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 2021-03-26
      • 2020-08-26
      相关资源
      最近更新 更多