【发布时间】:2019-05-27 22:44:01
【问题描述】:
我正在尝试学习如何使用 Firestore。
google documentation 说试试这种格式:
db.collection("users").get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
});
所以,我用它来做到这一点(将 db 更改为 fsDB,将“users”更改为“newsletters”
fsDB.collection("newsletters").get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(`${doc.id} => ${doc.data()}`);
});
});
当我尝试此操作时,我收到一条错误消息,提示未定义 querySnapshot。附上错误消息的屏幕截图。
我看过this post,并尝试了它的建议如下:
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
});
}
【问题讨论】:
-
“我收到一条错误消息,提示未定义 querySnapshot” ????错误消息是指代码的哪一行?我认为这不太可能是您问题中的任何代码
-
@Phil - 它指的是这个查询语句:querySnapshot.forEach((doc) => { console.log(
${doc.id} => ${doc.data()}); }); -
错误信息究竟是什么?如果您可以发布显示其上下文的屏幕截图,那可能会有所帮助。您是否绝对确定问题中的代码与您的实际代码匹配,包括大写/小写字符?
-
@Phil - 附上截图
-
我确定。我一直在交替使用复数和单数,以确保没有关于搜索记录的不成文规则。但同样的错误仍然存在
标签: javascript firebase google-cloud-firestore