-1

我尝试使用节点 js 和 mongodb 进行 crud 操作。所有 crud 操作工作正常。但我尝试运行 get 方法显示它;y 一条记录。在我看到我的代码后抛出错误(发送后无法设置标题) .如何解决这个问题任何人提出建议。

index.js

router.get('/', async (req, res,next) => {
    (async function() {
        try {
          await client.connect();
          console.log("Connected correctly to server");
          const db = client.db('olc_prod_db');
          let r = await db.collection('Ecommerce').find();
          r.forEach(function(result,err)
          {
            res.send(result)
          })
          // Close connection
          client.close();
        } catch(err) {
          console.log(err.stack);
        }
      })();

  });
4

2 回答 2

1

不需要 in forEach,只需执行以下操作:

const r = await db.collection('Ecommerce').find({}).toArray();
res.send({ data: r })
于 2019-04-23T13:16:40.060 回答
-1
router.get('/', async (req, res,next) => {
(async function() {
    try {
      await client.connect();
      console.log("Connected correctly to server");
      const db = db.collection('Ecommerce').find({}).toArray(function(error, documents) {
        if (err) throw error;
        res.send(documents);
      });
    } catch(err) {
      console.log(err.stack);
    }
  })();

});

对于每个后续请求,您只需“发送”一次。这个方法只是完成了请求周期,所以你不能在循环中调用它,因为循环运行'n'时间。

于 2019-04-23T13:21:22.263 回答