本文将分享javascript–Firebase如何在用户数据下动态搜索推送键的详细内容,并且还将对js实现动态搜索提示进行详尽解释,此外,我们还将为大家带来关于Firebase使用javascrip
本文将分享javascript – Firebase如何在用户数据下动态搜索推送键的详细内容,并且还将对js实现动态搜索提示进行详尽解释,此外,我们还将为大家带来关于Firebase 使用 javascript 查找具有用户名的用户、Firestore 中的 Firebase 云函数错误:不是普通的 JavaScript 对象、JavaScript Firebase淘汰当前用户、javascript – Firebase / Angularfire 0.9 – 创建新用户和个人资料的相关知识,希望对你有所帮助。
本文目录一览:- javascript – Firebase如何在用户数据下动态搜索推送键(js实现动态搜索提示)
- Firebase 使用 javascript 查找具有用户名的用户
- Firestore 中的 Firebase 云函数错误:不是普通的 JavaScript 对象
- JavaScript Firebase淘汰当前用户
- javascript – Firebase / Angularfire 0.9 – 创建新用户和个人资料
javascript – Firebase如何在用户数据下动态搜索推送键(js实现动态搜索提示)
{ "foo":{ "uid":{ // user's uid "push_key_1":{ "bar":"baz" },"push_key_2":{ "bar":"baz" } } } }
鉴于上面的代码模型,如何在查询中动态搜索push_key_1或push_key_2?
我试过这样做:
var searKey = 'push_key_1'; db.ref('foo').orderByKey().equalTo(searKey).once('value') .then(function(snap){ // snap.val() returns null. }).catch();
但snap.val()为null.结果orderByKey()仅用于排序目的.有没有办法实现这个目标?
解决方法
db.ref('foo').child(searKey).once('value'....
Firebase 使用 javascript 查找具有用户名的用户
试试这个
firebase.database().ref().child("users").orderByChild('username').equalTo("testUsername").once('value').then(snapshot => {
snapshot.forEach(function(childSnapshot) {
console.log(childSnapshot.val().username);
});
});
,
在 orderByChild()
调用中,您需要指定要排序/过滤的值的整个路径。由于 username
嵌套在 profileData
之下,即:
firebase.database().ref().child("users").orderByChild('profileData/username').equalTo("testUsername").once('value',function (snapshot) {
...
请注意,您还需要为嵌套属性定义索引,因此:
{
"rules": {
"users": {
".indexOn": "profileData/username"
}
}
}
Firestore 中的 Firebase 云函数错误:不是普通的 JavaScript 对象
当您调用 JSON.stringify
时,您会返回一个字符串。虽然字符串是 Firestore 中字段的有效值,但您试图将整个文档设置为不可能的字符串:
return docRef.set(JSON.stringify(fullTextAnnotation.text))
您需要将特定字段设置为此值:
return docRef.set({ text: JSON.stringify(fullTextAnnotation.text) })
JavaScript Firebase淘汰当前用户
因此,我遇到了这样的问题:每次添加新用户帐户时,它都会踢出已登录的当前用户。我阅读了firebase api,并说:“
如果创建了新帐户,则该用户会自动登录“ 但是他们从没有说过避免这种情况的任何其他事情。
//ADD EMPLOYEES addEmployees: function(formData){ firebase.auth().createUserWithEmailAndPassword(formData.email, formData.password).then(function(data){ console.log(data); }); },
我是管理员,正在向我的网站添加帐户。如果我可以在不注销并登录到新帐户的情况下添加帐户,我会很高兴。任何方式我都可以避免这种情况?
答案1
小编典典这实际上是可能的。
但并非直接,做到这一点的方法是创建第二个auth引用,并使用该引用创建用户:
var config = {apiKey: "apiKey", authDomain: "projectId.firebaseapp.com", databaseURL: "https://databaseName.firebaseio.com"};var secondaryApp = firebase.initializeApp(config, "Secondary");secondaryApp.auth().createUserWithEmailAndPassword(em, pwd).then(function(firebaseUser) { console.log("User " + firebaseUser.uid + " created successfully!"); //I don''t know if the next statement is necessary secondaryApp.auth().signOut();});
如果您未指定用于操作的Firebase连接,则默认情况下将使用第一个。
编辑
对于新用户的实际创建,除了管理员之外,没有其他人或其他人可以在第二个auth引用中进行身份验证,因为创建帐户所需的只是auth引用本身。
以下内容未经测试,但需要考虑
您要做的事情就是将数据写入Firebase。通常的做法是用户可以编辑/更新自己的用户信息,因此当您使用第二个auth引用编写此信息时,它应该可以工作。但是,如果您具有该用户的角色或权限,请确保使用具有正确权限的auth引用进行编写。在这种情况下,主要身份验证是admin,第二个身份验证是新创建的用户。
答案2
小编典典你可以将Firebase功能用于添加用户。
const functions = require(''firebase-functions'');const admin = require(''firebase-admin'');admin.initializeApp();const cors = require(''cors'')({origin: true,});exports.AddUser = functions.https.onRequest(( req, res ) => {// Grab the text parameter.cors( req, res, () => { let email = req.body.email; let passwd = req.body.passwd; let role = req.body.role; const token = req.get(''Authorization'').split(''Bearer '')[1]; admin.auth().verifyIdToken(token) .then( (decoded) => { // return res.status(200).send( decoded ) return creatUser(decoded); }) .catch((err) => { return res.status(401).send(err) }); function creatUser(user){ admin.auth().createUser({ email: email, emailVerified: false, password: passwd, disabled: false }) .then((result) => { console.log(''result'',result); return res.status(200).send(result); }).catch((error) => { console.log(error.message); return res.status(400).send(error.message); }) } }); });
javascript – Firebase / Angularfire 0.9 – 创建新用户和个人资料
但是,据我所知,此方法不会返回任何@R_301_6260@凭据.因此,如果我想向该用户添加配置文件,那么检索该用户Auth Data的最佳方法是什么,特别是“uid”,这样我就可以为我的@R_301_6260@保存配置文件数据.以下是我想要做的一个例子
var FIREBASEURL = "https://<my-firebase>.firebaseio.com" var ref = new Firebase(FIREBASEURL); $rootScope.authObj = $firebaseAuth(ref); var newUser = { email: "email@email.com",password: "password",displayName: "display Name",favFood: "Food" }; $rootScope.authObj.$createuser(newUser.email,newUser.password).then(function() { console.log("User created successfully!"); // Retrieve new Auth Data specifically uid var newAuthData = ?????????? // Remove password from object and create user profile delete newUser.password; newUser.timestamp = Firebase.ServerValue.TIMESTAMP; var userRef = new Firebase(FIREBASEURL + '/users/'); userRef.child( newAuthData.uid ).set(newUser); }).catch(function(error) { console.error("Error: ",error); });
解决方法
var FIREBASEURL = "https://<my-firebase>.firebaseio.com" var ref = new Firebase(FIREBASEURL); $rootScope.authObj = $firebaseAuth(ref); var newUser = { email: "email@email.com",newUser.password).then(function(authData) { console.log(authData.uid); //should log new uid. return createProfile(newUser,authData); }); function createProfile(authData,user){ var profileRef = $firebase(ref.child('profile')); return profileRef.$set(authData.uid,user); };
这应该让你去.关键是将返回的promise(在我的示例中为authData)传递给后续函数.
在0.9.0中,有必要调用身份验证方法以获取用户的uid.
关于javascript – Firebase如何在用户数据下动态搜索推送键和js实现动态搜索提示的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Firebase 使用 javascript 查找具有用户名的用户、Firestore 中的 Firebase 云函数错误:不是普通的 JavaScript 对象、JavaScript Firebase淘汰当前用户、javascript – Firebase / Angularfire 0.9 – 创建新用户和个人资料等相关知识的信息别忘了在本站进行查找喔。
本文标签: