有人打开每个新页面,我想知道他是否是登录用户。
我这样做(是不是有错?Firebase可能还没有准备好?):
if(firebase.auth().currentUser)
如果这是一个用户,我只想 写 一些东西到数据库。 但是我有一种感觉,我为此目的包括了很多东西。
所以我必须确定要启动该应用程序:
<!-- Initialize Firebase -->
<script>
var config = {
apiKey: "xxxxxxxxxxxxxxxxxxxxxxxx",
authDomain: "xxx.firebaseapp.com",
databaseURL: "https://xx.firebaseio.com",
projectId: "xx",
storageBucket: "xx.appspot.com",
messagingSenderId: "xxx"
};
firebase.initializeApp(config);
const db = firebase.firestore();
</script>
然后,其中哪些是 不必要的?
<script src="https://www.gstatic.com/firebasejs/6.2.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/6.2.0/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/6.2.0/firebase-storage.js"></script>
<script src="https://www.gstatic.com/firebasejs/6.2.0/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/6.2.0/firebase-functions.js"></script>
答案 0 :(得分:2)
您可以实时检查用户身份验证更改,并执行操作(更改全局变量,状态变量,更新数据库值等),您只需要firebase-app和firebase-auth,firebase-firestore是可选的因为您可以在api /服务器(firebase-admin)中或通过http请求写入数据:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
} else {
// No user is signed in.
}
});
请谨慎使用数据库规则来处理数据库文字
编辑:这是一个在没有Firestore库的情况下如何添加数据的示例:
const data = {
fields: {
name: { stringValue: 'Joe' },
email: { stringValue: 'joe@mail.com' },
message: { stringValue: 'Hello' },
phone: { stringValue: '123456' },
modified: { timestampValue: new Date() },
},
};
$.ajax({
url: 'https://firestore.googleapis.com/v1/projects/YOURDB/databases/(default)/documents/clients/someclient/contact',
type: 'POST',
data: JSON.stringify(data),
headers: {
'Content-Type': 'application/json',
},
dataType: 'json',
success() {
console.log('Document successfully written!');
return true;
},
error(err) {
console.error('Error saving document', err);
return false;
},
})
答案 1 :(得分:1)
使用firebase.auth()
仅需要firebase-app
和firebase-auth
,但我可以看到您也在使用数据库,因此也需要firebase-firestore