sql >> データベース >  >> NoSQL >> MongoDB

約束の拒否を解決できず、応答として配列を送信できません

    result.forEach 約束の配列を返します。 Promise.all([])を使用して一度にすべてを約束する必要があります

    exports.get_users = (req, res) => {
      SubscriptionPlan.find().then(async (result) => {
        if (!result) {
          return res.status(400).json({ message: "unable to process" });
        }
        let modifiedData = [];
        await Promise.all(
          result.map(async(data) => {
            if (data.processStatus === "active") {
              const response = await Users.findById(data.userId);
              modifiedData.push(response);
            }
          })
        );
        return res.json(modifiedData);
      }).catch((err) => console.log(err));
    };
    

    または一度に見つけることができます

    exports.get_users = async (req, res) => {
      try {
        const result = await SubscriptionPlan.find({ processStatus: "active" });
        if (!result) {
          return res.status(400).json({ message: "unable to process" });
        }
        const ids = result.map(({ userId }) => userId);
        const response = await Users.find({ userId: { $in: ids } });
        return res.json(response);
      } catch (err) {
        console.log(err)
        return res.status(400).json({ message: "unable to process" });
      }
    };
    



    1. NoSqlデータベース(MongoDB)で外部キーを適用するにはどうすればよいですか?

    2. redisデータベースを変更するにはどうすればよいですか?

    3. Dockermongodbがmacosxとボリュームを共有します

    4. サブドキュメントのMongoDB$sumおよび$avg