如何使用ForEach比较返回的猫鼬模型中两个属性的结果并发送响应

时间:2018-09-20 23:29:27

标签: arrays node.js mongoose

拍下这张图

  

用户A已经有某些朋友,他发送了一个探索请求,要求db查询与他的计算机科学课程相同的用户

查询返回一系列用户,他们提供与他相同的课程。

  

我的目标

  1. 我正在尝试使用users.forEach()方法来检查返回的用户是否已经是他的朋友,然后针对每个用户检查该用户是否已存在于用户A的mongo中”文档”,我将在问题后放置用户A的模型架构。

  2. 想出一种比使用forEach方法更有效的方法,因为我认为它将来可能会导致可伸缩性问题。

  

相关用户架构

const userSchema = new mongoose.Schema({
    friends: [{
        Name: String,
        userTag: String,
        email: String,
        userID: String,
        profilePicturePath: String
    }]
});
  

路线代码

User.find({
    'userProfile.Course': req.header('x-user-course')
})
.then((users) => {
    let mapExploreBox = []; 
    users.forEach((user) => {
        User.find({
                email: req.params.email
            })
            .then((ClientUser) => {
                ClientUser.forEach(friend => {
                    if (friend.email != user.email) {
                        console.log(true);
                        mapExploreBox.push({
                            Name: user.Name,
                            userProfile: user.userProfile
                        });
                    }
                });
            });
        return mapExploreBox;
    }).catch((err) => {
        console.log(err);
    });

})
.catch((err) => {
    res.send('Oops something went wrong').status(400);
    console.log(err);
});

0 个答案:

没有答案