我尝试使用nodejs和mongodb进行Crud操作。所有Crud操作都工作正常。但是get方法仅显示一个数据而不显示所有数据

时间:2019-04-23 13:14:21

标签: node.js nodejs-stream nodejs-server

我尝试使用node js和mongodb进行crud操作。所有crud操作都工作正常。但是我尝试运行get方法对其进行显示;一条记录。在我看到我的代码抛出错误后(它们之后不能设置标头)发送)。如何解决这个问题,任何人都可以提出建议。

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);
        }
      })();

  });

2 个答案:

答案 0 :(得分:1)

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

const r = await db.collection('Ecommerce').find({}).toArray();
res.send({ data: r })

答案 1 :(得分:-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',因此您无法在循环中调用它。