从 mongodb 获取数据

Getting a data from mongodb

router.get('/channels', isLoggedIn, function(req, res) {
    channel.find({}, function(err, channeldata) {
        var channelMap = {};
        console.log('channelMap:');
        console.log(channelMap);
        channeldata.forEach((chn)=> {
            console.log(chn)
            var arr = chn
        });

        if(err || channeldata === null){
                res.status(404).send({
                    message: 'Channel Not Found',
                    data: []
                })
        }
        else {
                res.status(200).json({
                    message: "channel success",
                    data: arr
                })
        }
        console.log(channelMap);
        // res.send(userMap);  
    });
});

这是我实现 GET 的方式,我正在尝试获取看起来像

chn

来自我的数据库。以上是 console.log(chn)

的结果

我尝试通过

得到这个
axios.get('/channels').then( (res) => {
            console.log(res);
        }).catch( (err) => {
            console.log(err);
        });

在我的前端,但应用程序崩溃并给我一条错误消息说

events.js:160
      throw er; // Unhandled 'error' event
      ^

ReferenceError: arr is not defined

我做错了什么?

您的问题在行

channeldata.forEach((chn)=> {
            console.log(chn)
            var arr = chn
        });

您在 for each 循环中定义了 arr,这意味着 arr 只能在 循环中使用。

如果您在代码中将 arr 换成 chn

res.status(200).json({
                    message: "channel success",
                    data: arr
                })

那应该可以了