Javascript Firestore查询将[对象]返回到浏览器
查询Firestore时,浏览器返回的是Javascript Firestore查询将[对象]返回到浏览器,javascript,node.js,firebase,express,google-cloud-firestore,Javascript,Node.js,Firebase,Express,Google Cloud Firestore,查询Firestore时,浏览器返回的是[object object],[object object],而不是: { > Description: 'This is a job offer', > Active: true, > Location: 'Warsaw', > Name: 'BA in Bank', > Deadline: Timestamp { _seconds: 1603317600, _nanoseconds: 0 } > } > { >
[object object],[object object]
,而不是:
{
> Description: 'This is a job offer',
> Active: true,
> Location: 'Warsaw',
> Name: 'BA in Bank',
> Deadline: Timestamp { _seconds: 1603317600, _nanoseconds: 0 }
> }
> {
> Description: 'This is another job offer',
> Location: 'Amesterdam',
> Name: 'PM job',
> Active: true,
> Deadline: Timestamp { _seconds: 1607554800, _nanoseconds: 0 }
> }
有没有办法将这些对象值传递给路由处理程序?多亏了@gso\u gabriel的建议,我终于找到了答案 可以在express中间件上发送对象,但需要在EJS视图上使用forEach(),以便它在对象中循环并提取元素
router.get('/projects', async(req, res) => {
const snapshot = await firebase.firestore().collection("projects").get();
const docs = snapshot.docs.map(doc => doc.data())
res.render('projects', { docs });
});
然后在EJ上,您需要执行docs.forEach()
{%>
在EJS中,您可以使用它在前端添加您想要的任何html元素
我希望这对未来的用户有所帮助。您可能希望尝试在路由器中对其进行字符串化:
res.render('projects',{JSON.stringify(array)})
@FrankvanPuffelen我认为这对我没有帮助,因为我无法在EJS中操作它——即使我明白你的意思。嗨@PauloBrás,你能检查一下这两种情况并确认它们是否对你有帮助吗?它们显示了可能对你有帮助的路由器的不同方法,包括你如何重新连接的顺序上的差异保存数据,这可能是您的问题的原因。@gso_gabriel对此表示感谢-它没有答案,但有一些提示让我找到了解决方案!:)
router.get('/projects', async(req, res) => {
const snapshot = await firebase.firestore().collection("projects").get();
const docs = snapshot.docs.map(doc => doc.data())
res.render('projects', { docs });
});
<% docs.forEach(doc => { %>
<%- doc.Name; %>
<% }); %>