Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js deleteMany仅返回更改流中删除的1个值_Node.js_Reactjs_Mongodb_Mongoose_Pusher - Fatal编程技术网

Node.js deleteMany仅返回更改流中删除的1个值

Node.js deleteMany仅返回更改流中删除的1个值,node.js,reactjs,mongodb,mongoose,pusher,Node.js,Reactjs,Mongodb,Mongoose,Pusher,我有一个deleteMany请求,但在筛选deleteMany返回值的上下文时遇到了困难。它只返回从pusherjs中删除的1个值 这是我在服务器端的变更流代码和推送程序代码 if (schedules.operationType === 'delete') { const scheduleDetails = schedules.documentKey; pusher.trigger('schedules', 'deleted', {

我有一个deleteMany请求,但在筛选deleteMany返回值的上下文时遇到了困难。它只返回从pusherjs中删除的1个值

这是我在服务器端的变更流代码和推送程序代码

if (schedules.operationType === 'delete') {
    const scheduleDetails = schedules.documentKey;              

    pusher.trigger('schedules', 'deleted', {
        _id: scheduleDetails._id,
        teamOne: scheduleDetails.teamOne,
        teamTwo: scheduleDetails.teamTwo,
        user: scheduleDetails.user,
        isDone: scheduleDetails.isDone,
        isStarted: scheduleDetails.isStarted,
        date: scheduleDetails.date,
        gameEvent: scheduleDetails.gameEvent,
    });
}
这是我客户端的推送代码。顺便说一下,我正在用React。它存储在我的上下文api中

    ScheduleChannel.bind('deleted', ({ deletedSchedule }) => {
        console.log(deletedSchedule);
        setScheduleList(
            scheduleList.filter((schedule) => schedule._id !== deletedSchedule._id)
        );
    });
这是我要求的代码

exports.deleteallmatch = async (req, res) => {
    try {
        const { sub } = req.user;
        const deletedMatches = await Schedule.deleteMany({ user: sub });

        return res.status(201).json({
            message: 'All of your schedule is successfully deleted!',
            deletedMatches,
        });
    } catch (err) {
        return res.status(400).json({
            message: 'Something went wrong.',
        });
    }
};
删除请求很好,但我希望在我的应用程序中具有实时性。因为只发送了一个数据,而不是多个数据。我怎样才能解决这个问题

deleteMany()方法返回一个包含三个字段的对象:

  • n–匹配文档的数量
  • ok–1如果操作成功
  • deletedCount–已删除文档的数量
  • 您可以做的是:

  • 首先查找与查询匹配的所有元素
  • 将它们存储在某个变量中
  • 执行删除
  • 返回存储的变量
  • let deleted_items = await Schedule.find({ user: sub });
    await Schedule.deleteMany({ user: sub });
    
    return res.status(201).json({
       message: 'All of your schedule is successfully deleted!',
       deleted_items,
    });