Javascript 如何从firestore读取数据?
我正在努力学习如何使用firestore 用户表示要尝试此格式:Javascript 如何从firestore读取数据?,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我正在努力学习如何使用firestore 用户表示要尝试此格式: db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); }); }); 所以,我用它来做这件事(把db改成fsDB,“用户”改成“时事通讯” 当我尝试此操作时,我得到一个错误,
db.collection("users").get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
});
所以,我用它来做这件事(把db改成fsDB,“用户”改成“时事通讯”
当我尝试此操作时,我得到一个错误,表示querySnapshot未定义。错误消息的屏幕截图已附加
我看到并尝试了它的建议如下:
fsDB.collection("newsletters").query.get().then(function(querySnapshot) {
if (querySnapshot.empty) {
console.log('no documents found');
} else {
querySnapshot.docs.map(function (documentSnapshot) {
console.log(documentSnapshot.data().name);
});
}
});
这次尝试使用if语句生成了一个解析错误,但我也找不到解决这个问题的方法
这必须有一个简单的解决方案,但我不知道如何从数据库中获取记录
下一次尝试
我尝试将代码移到return语句上方,并将其放入变量中,如所附的屏幕截图所示,但仍会产生错误,如图所示。无论我是否保留或丢失querySnapshot周围的括号,这些错误都是相同的
添加状态
class Fndate extends React.Component {
state = {
options: [],
anzic: [],
country: [],
region: [],
}
selectCountry (val) {
this.setState({ country: val });
}
selectRegion (val) {
this.setState({ region: val });
}
async componentDidMount() {
// const fsDB = firebase.firestore(); // Don't worry about this line if it comes from your config.
let options = [];
await fsDB.collection("abs_for_codes").get().then(function (querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.id, ' => ', doc.data());
options.push({
value: doc.data().title.replace(/( )/g, ''),
label: doc.data().title + ' - ABS ' + doc.id
});
});
});
let anzic = [];
await fsDB.collection("anzic_codes").get().then(function (querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.id, ' => ', doc.data());
anzic.push({
value: doc.data().Title.replace(/( )/g, ''),
label: doc.data().Title + ' - ANZIC ' + doc.id
});
});
});
await fsDB
.collection("newsletter")
.get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data().email}`);
}
);
});
this.setState({
options,
anzic
});
}
]我认为你应该去掉“.query”。 如果集合中有数据,则
.empty
返回false
。
但是我想知道,为什么在你的例子中,querySnapshot
没有定义
db.collection("lessons").get()
.then(function(querySnapshot) {
if (!querySnapshot.empty) {
querySnapshot.docs.map(function(documentSnapshot) {
console.log(documentSnapshot.data().name);
})
} else {
console.log('no documents found');
}
});
控制台
我相信您正在使用React,我刚刚意识到您正在调用
render
方法中讨论的方法
尝试在componentDidMount
中执行此操作。可以找到一个参考
因此,您的代码如下所示:
class YourClass extends React.Component {
componentDidMount(){
fsDB.collection("newsletters").get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
});
}
render(){
return (....your existing jsx....)
}
}
请注意,我不知道您的类名,也不知道您如何定义组件。但我只是说您需要在componentDidMount
中移动代码
我们无法查看您的整个文件。但我确信这是一个语法错误(尤其是JSX)您可以使用自动脚本来执行此操作。 您只需要python和firebase_管理
“我得到一个错误,说querySnapshot没有定义”@Phil-它引用了这个查询语句:querySnapshot.forEach((doc)=>{console.log(
${doc.id}=>${doc.data()}
););错误信息到底是什么?如果你能发布一个显示其上下文的屏幕截图,这可能会有所帮助。你是否绝对确定你问题中的代码与你的实际代码相匹配,包括大写/小写字符?@Phil-screenshot attachedI我确定。我一直在交替使用复数和单数大小写,以确保没有打开它关于搜索记录的十条规则。但同样的错误仍然存在。这给出了同样的错误-使用上面标记的if语句。感谢您的帮助。一定有一种简单的方法可以从数据库读取数据!这是我第二天尝试找出它是什么!@Phil已经回答了上面这个谜团的一部分。我尝试了这个。我得到了e与使用其他常量在return语句上方定义变量的错误相同。我在异步中使用了它。上面帖子中显示的相同语法错误仍然存在,并且控制台没有记录数据。实际上,如果我在其上放置WAIT标记,这会起作用。感谢帮助,我无法理解jsx to cat的react文档中的示例ch数据并显示它。这看起来像我正在寻找的位,但我不知道在这个mount语句中如何处理它:const list=This.listRef.current;@Mel,你能在你的问题中给出你的整个组件吗?这样,我们可以帮助你实现你的目标。我猜你需要使用setState
来实现它。我不知道我认为您需要使用wait,但我无法进一步帮助您,因为我看不到您的组件hi@kkesley-state是上面添加的
class YourClass extends React.Component {
componentDidMount(){
fsDB.collection("newsletters").get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
});
}
render(){
return (....your existing jsx....)
}
}