小编Dha*_*raj的帖子

升级反应本机后 AES.decrypt 不起作用

将我们的 React Native 从 0.63.3 更新到 0.66 后,

CryptoJS.AES.decrypt(encryptedString, key)
Run Code Online (Sandbox Code Playgroud)

返回无效数据。我们能够确定这与 Metro + babel 依赖关系有关,但无法找到解决方法。这与 0.56.0 到 0.65.0 的 Metro Bundler 有关吗?使用:

 react-native-crypto-js
Run Code Online (Sandbox Code Playgroud)

javascript cryptojs react-native metro-bundler

6
推荐指数
0
解决办法
119
查看次数

生产中的 React Native:Cryptojs AES 错误:格式错误的 UTF-8 数据

我对我的react-native android应用程序和nodejs服务器使用了相同的aes加密代码(在https://github.com/imchintan/react-native-crypto-js#readme ),

let data = [{id: 1}, {id: 2}]
// Encrypt in react-native android app
let ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123').toString();

// Decrypt in the nodejs server
let bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
let decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
Run Code Online (Sandbox Code Playgroud)

当我的反应本机应用程序处于“JS Dev Mode”激活状态并且“JS Minify”停用时,服务器中的解密工作正常,但是当我将应用程序配置为“JS Dev Mode”停用并且“JS Minify”激活时,我无法解密服务器中的数据,

错误:Object.stringify 中的 UTF-8 数据格式错误

仅当应用程序处于生产模式时,服务器才会抛出错误,错误恰好在执行时发生:bytes.toString(CryptoJS.enc.Utf8)

有人可以向我解释我做错了什么或如何解决问题吗?

javascript cryptojs react-native

5
推荐指数
0
解决办法
759
查看次数

为什么我在 python firebase-admininitialize_app() 上收到此错误?

当我尝试连接 google firebase 实时数据库时,出现此错误:

ValueError: The default Firebase app already exists. This means you called 
initialize_app() more than once without providing an app name as the second argument. In 
most cases you only need to call initialize_app() once. But if you do want to initialize 
multiple apps, pass a second argument to initialize_app() to give each app a unique name.
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import firebase_admin
from firebase_admin import credentials
from firebase_admin import db

cred = credentials.Certificate('firebase-sdk.json')

firebase_admin.initialize_app(cred, {
'databaseURL': 'https://test-139a6-default-rtdb.firebaseio.com/'
})
Run Code Online (Sandbox Code Playgroud)

python firebase firebase-admin

5
推荐指数
1
解决办法
4346
查看次数

无法读取未定义的属性(读取“路径”)Firebase ref 函数冲突

错误:

未捕获(承诺中)类型错误:无法读取未定义的属性(读取“路径”)

根据我的测试,

   import { getStorage, ref, uploadBytesResumable, getDownloadURL } 
    from "https://www.gstatic.com/firebasejs/9.1.1/firebase-storage.js";
    
    import { getDatabase, set, child, get, update, remove } 
    from "https://www.gstatic.com/firebasejs/9.1.1/firebase-database.js";
    
    const realdb = getDatabase();
Run Code Online (Sandbox Code Playgroud)

该错误是因为firebase-storage中的ref( )函数与firebase-database中的ref( )不同

但我只能导入其中一个函数,那么该怎么办呢?要保存 downloadURL,我需要 (firebase-storage) 和 (firebase-database)。

javascript firebase firebase-realtime-database firebase-storage

5
推荐指数
1
解决办法
5797
查看次数

如何减少 Firestore 的文档读取

我正在将 Firestore (我是新手)用于小型 Web 应用程序。目前,每次刷新或转到另一个页面时,该函数都会检索 Firestore 中的所有文档。但它检索的数据不会经常改变,

有没有一种方法可以让我检索所有数据,而无需阅读任何文档?

我目前正在使用这些函数来检索数据

firebase
.firestore()
.collection("products")
.then((snapshot) => {
       snapshot.forEach((docs) => {
       });
});



firebase
.firestore()
.collection("products")
.where("prodID", "==", prodID)
.then((snapshot) => {
       snapshot.forEach((docs) => {
       });
});
Run Code Online (Sandbox Code Playgroud)

javascript nosql firebase google-cloud-functions google-cloud-firestore

5
推荐指数
1
解决办法
2874
查看次数

updateProfile 不是函数(Firebase)

我正在学习 React,但是当我注册用户(使用 createUserWithEmailAndPassword)并尝试更新 displayName 属性时,我收到错误“ user1.updateProfile 不是函数”。

我该如何解决这个错误?

我的代码:

const register = async (e) => {
        if (name.length == 0) {
            alert("name cannot be empty");
        } else {
            const userWithEmailAndPassword = await createUserWithEmailAndPassword(auth, email, password)
                .then((auth1) => {
                    const user1 = auth.currentUser;
                    user1.updateProfile({
                        displayName: name
                    });
                })
                .catch(error => alert(error.message))
            console.log(userWithEmailAndPassword);
        }
    }
Run Code Online (Sandbox Code Playgroud)

javascript firebase reactjs firebase-authentication

5
推荐指数
1
解决办法
4646
查看次数

Firebase 函数 - FirebaseError:在非交互模式下运行时缺少必需的选项(强制)

我有一个 Firebase 函数,当用户的帐户被删除时,它会删除 Firestore 数据库中用户的集合。

const firebase_tools = require("firebase-tools");
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();

exports.deleteUser = functions.auth.user().onDelete((user) => {
  return firebase_tools.firestore
      .delete(`users/${user.uid}`, {
        project: process.env.GCLOUD_PROJECT,
        token: functions.config().fb.token,
        recursive: true,
        yes: true
      }).catch((error) => {
        console.log(error);
        throw new functions.https.HttpsError(
            "unknown",
            "Error deleting user's data"
        );
      });
});
Run Code Online (Sandbox Code Playgroud)

每当删除用户并执行该函数时,我都会在函数日志中收到以下错误。

FirebaseError: Missing required options (force) while running in non-interactive mode
    at prompt (/workspace/node_modules/firebase-tools/lib/prompt.js:16:15)
    at promptOnce (/workspace/node_modules/firebase-tools/lib/prompt.js:29:11)
    at Command.actionFn (/workspace/node_modules/firebase-tools/lib/commands/firestore-delete.js:69:51)
    at Object.delete (/workspace/node_modules/firebase-tools/lib/command.js:190:25)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
Run Code Online (Sandbox Code Playgroud)

我能找到的与此相关的唯一信息是有关将功能部署/删除到 Firebase 的信息,并且我找不到太多有关 firebase-tools …

node.js firebase google-cloud-functions google-cloud-firestore firebase-cli

5
推荐指数
2
解决办法
1199
查看次数

如何使用云函数正确连接MongoDB?

我只想为每个运行 Cloud Functions 的实例连接一次 Atlas 集群。

这是我的实例代码:

const MongoClient = require("mongodb").MongoClient;

const client = new MongoClient("myUrl", {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

exports.myHttpMethod = functions.region("europe-west1").runWith({
  memory: "128MB",
  timeoutSeconds: 20,
}).https.onCall((data, context) => {
  console.log("Data is: ", data);
  client.connect(() => {
    const testCollection = client.db("myDB").collection("test");
    testCollection.insertOne(data);
  });
});
Run Code Online (Sandbox Code Playgroud)

我想避免client.connect()在每个函数调用中看起来确实太多了。

我想做这样的事情:

const MongoClient = require("mongodb").MongoClient;

const client = await MongoClient.connect("myUrl", {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const db = client.db("myDB");

exports.myHttpMethod = functions.region("europe-west1").runWith({
  memory: "128MB",
  timeoutSeconds: 20,
}).https.onCall((data, context) => …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js firebase google-cloud-platform google-cloud-functions

5
推荐指数
1
解决办法
2701
查看次数

增量备份 Firestore 数据

我正在尝试考虑为生产应用程序备份 Firestore 数据的最佳(自动、最便宜且易于使用)方法。

我知道我可以通过预定的云功能自动导出并将它们发送到 gcloud 存储桶。我使用这种方法的问题是,它不允许“新文档和更新文档的增量更新”,而只能备份整个集合。这意味着大多数数据每次都会备份,即使自上次备份以来它甚至没有发生变化,从而导致成本无缘无故地飙升。

我想到的方法是在“my-app”项目中拥有一个云功能,该功能将侦听 Firestore 中的每个更改,并在“my-app-backup”项目的 Firestore 中执行相同的更改。

这样,我只备份更改过的数据。此外,备份的数据永远不会过时(因为它是实时备份的),这与第一种方法(例如每天或每周进行自动备份)不同。

在第一个 Firebase 项目中使用单个云函数将数据写入另一个 Firebase 项目是否可能?如果没有,也许将数据写入其他地方(而不是另一个 Firebase 项目中)?这种方法是否有意义,或者您有更好的建议吗?

firebase google-cloud-platform google-cloud-functions google-cloud-firestore

5
推荐指数
1
解决办法
1119
查看次数

如何使用key删除firebase实时数据库子节点?

当我尝试运行下面的代码时,出现错误,但我不知道为什么。

confirmDelete(e) {
  const db = getDatabase();
  db.ref("/ships/" + e.target.id).remove();
},
Run Code Online (Sandbox Code Playgroud)

如果我记录,我会得到与下面代码中的ShipKeye.target.id完全相同的信息。

以下是该数据库的示例:

{
  "ships": {
    "-N43Q4E2ruMpyfaIHGDK": {
      "date": "2022-08-06T18:00",
      "name": "ORANGE OCEAN",
      "shipKey": "-N43Q4E2ruMpyfaIHGDK"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript web firebase vue.js firebase-realtime-database

5
推荐指数
1
解决办法
1574
查看次数