我尝试使用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);
}
})();
});
答案 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',因此您无法在循环中调用它。