GVKun编程网logo

javascript – Firebase如何在用户数据下动态搜索推送键(js实现动态搜索提示)

10

本文将分享javascript–Firebase如何在用户数据下动态搜索推送键的详细内容,并且还将对js实现动态搜索提示进行详尽解释,此外,我们还将为大家带来关于Firebase使用javascrip

本文将分享javascript – Firebase如何在用户数据下动态搜索推送键的详细内容,并且还将对js实现动态搜索提示进行详尽解释,此外,我们还将为大家带来关于Firebase 使用 javascript 查找具有用户名的用户、Firestore 中的 Firebase 云函数错误:不是普通的 JavaScript 对象、JavaScript Firebase淘汰当前用户、javascript – Firebase / Angularfire 0.9 – 创建新用户和个人资料的相关知识,希望对你有所帮助。

本文目录一览:

javascript – Firebase如何在用户数据下动态搜索推送键(js实现动态搜索提示)

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 使用 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 对象

Firestore 中的 Firebase 云函数错误:不是普通的 JavaScript 对象

当您调用 JSON.stringify 时,您会返回一个字符串。虽然字符串是 Firestore 中字段的有效值,但您试图将整个文档设置为不可能的字符串:

return docRef.set(JSON.stringify(fullTextAnnotation.text))

您需要将特定字段设置为此值:

return docRef.set({ text: JSON.stringify(fullTextAnnotation.text) })

JavaScript Firebase淘汰当前用户

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 – 创建新用户和个人资料

javascript – Firebase / Angularfire 0.9 – 创建新用户和个人资料

要在Angularfire 0.9中创建@R_301_6260@,我可以使用$firebaseAuth服务和$createuser方法.

但是,据我所知,此方法不会返回任何@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);

});

解决方法

在0.9.1中,uid将与promise一起返回.例如:

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 – 创建新用户和个人资料等相关知识的信息别忘了在本站进行查找喔。

本文标签: