我尝试在此处阅读如何从对象中删除属性:How do I remove a property from a JavaScript object?
它应该使用delete,我尝试这样
const eventData = {...myEvent}; // myEvent is an instance of my `Event` class
delete eventData.coordinate; // I have error in here
Run Code Online (Sandbox Code Playgroud)
但我有这样的错误
“删除”运算符的操作数必须是可选的。ts(2790)
然后我读到:Typescript 无法推断删除运算符和扩展运算符?
似乎可以通过使用更改我的 tsconfig.json 文件来消除该错误
{
"compilerOptions": {
...
"strictNullChecks": false,
}
...
}
Run Code Online (Sandbox Code Playgroud)
但如果我实现这个,我将不再进行空检查
那么如何从 Typescript 中的对象中删除属性而不使用“删除”运算符的操作数必须是可选错误?
我尝试阅读此线程List of AuthorizationErrors with Firebase Login,并且我也尝试搜索,但我只能在此处找到 admin SDK 身份验证错误
这些链接中的错误代码与 Flutter 应用程序的 Firebase Auth 的错误代码不同
我的意思是,我需要这里的错误代码
Future<void> signInUsingEmail({required String email, required String password}) async {
try {
await _auth.signInWithEmailAndPassword(email: email, password: password);
} on FirebaseAuthException catch (error) {
// I need the error.code in here
print(error.code);
}
Run Code Online (Sandbox Code Playgroud)
我可以知道所有可用的错误代码吗?这样我就可以用自己的语言编写自己的错误消息。就目前而言,我只能捕获下面的这些错误代码
还有什么?
当我运行时firebase emulators:start出现此错误
错误:如果没有在 firebase.json 中指定规则文件,则无法启动存储模拟器
在安装存储模拟器之前,我可以像这样设置 Firestore 规则
{
"firestore": {
"rules": "./functions/firestore.rules"
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
]
},
"emulators": {
"auth": {
"port": 9099
},
"functions": {
"port": 5001
},
"firestore": {
"port": 8080
},
"storage": {
"port": 9199
},
"ui": {
"enabled": true
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想我必须在这里制定存储规则。但我不知道怎么办。我找不到这方面的文档
firebase firebase-tools firebase-storage firebase-admin firebase-cli
我只是将我的依赖更新为"@firebase/rules-unit-testing": "^2.0.0"
它破坏了我的代码。我的代码是
import * as firebase from "@firebase/rules-unit-testing";
function getAdminFirestore() {
return firebase.initializeAdminApp({ projectId: projectID }).firestore();
}
function getFirestore(auth?: TokenOptions) {
return firebase.initializeTestApp({ projectId: projectID, auth: auth }).firestore();
}
beforeEach(async () => {
await firebase.clearFirestoreData({ projectId: projectID });
});
after(async () => {
await firebase.clearFirestoreData({ projectId: projectID });
});
Run Code Online (Sandbox Code Playgroud)
但我有很多错误,因为有些方法不再像这样可用
那么 firebase/rules-unit-testing 2.0.0 中的等效方法是什么?
假设在测试文件夹中,我有这样的结构
test
unit_test
firebase_services
firestore_user_services_test.dart
http_services
http_services_test.dart
widget_test
login_page_test.dart
home_page_test.dart
Run Code Online (Sandbox Code Playgroud)
我有两个名为 test 文件夹的文件unit_test夹widget_test。我需要在唯一的内部运行所有测试unit_test。怎么做 ?
因为如果我运行flutter test它将运行文件夹内的所有测试test。如果我跑flutter test unit_test,它就不会跑
我是打字稿的新手。我正在将我的代码从 JavaScript 转换为 Typescript。我下面的代码可以在 JavaScript 中运行,但在 Typescript 中出现错误
import axios from "axios";
const data = JSON.stringify([eventID]);
const config = {
method: "delete",
url: url,
headers: {
"Authorization": `Bearer ${elasticPrivateKey}`,
"Content-Type": "application/json",
},
data: data,
};
return axios(config);
Run Code Online (Sandbox Code Playgroud)
我有这样的错误
我不明白如何获取和配置它AxiosRequestConfig
我想在水平方向上制作两行集合视图,如下所示
我是iOS开发的新手,一些教程只是举例说明如何垂直制作集合视图的一定数量的列,但我需要限制集合视图的行数
我尝试将节数设为两个,但行数仍然为一
import UIKit
class ViewController: UIViewController, UICollectionViewDataSource{
@IBOutlet var collectionView: UICollectionView!
let imageArray = [UIImage(named: "image1"),UIImage(named: "image2"),UIImage(named: "image3"),UIImage(named: "image4"),UIImage(named: "image5"),UIImage(named: "image6"),UIImage(named: "image8"),UIImage(named: "image9")]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 2
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return …Run Code Online (Sandbox Code Playgroud) 我试图制作这样的关注者和关注者模型。所以每个用户都会有关注者和关注者子集合
我只在以下子集合中保存文档中的最少数据,例如个人资料图片路径、uid 和全名
但此模型的问题是,当用户更改“用户”父集合中的个人资料图片或显示名称时,关注者的以下子集合中的名称和个人资料图片不会更新。
所以我想我需要使用可调用的云函数来解决这个问题以更新以下子集合中的所有文档
exports.callableUpdateUserDataInOtherDocuments = functions.https.onCall(async (data, context) => {
try {
const verifiedUserSnapshot = await db.doc(`users/${context.auth.uid}`).get()
const userData = verifiedUserSnapshot.data()
// update display name in following subcollection of the followers
const changeUserDataInFollowersPromises = []
const followersSnapshot = await db.collection(`users/${context.auth.uid}/followers`).get()
followersSnapshot.forEach( doc => {
const followerID = doc.data().uid
const p = db.doc(`users/${followerID}/following/${userData.uid}`).update({
fullname: userData.fullname,
profilePicturePath: userData.profilePicturePath
})
changeUserDataInFollowersPromises.push(p)
})
return Promise.all(changeUserDataInFollowersPromises)
} catch(error) {
console.log(error)
return null
}
})
Run Code Online (Sandbox Code Playgroud)
但使用这个云功能更新对我来说似乎效率不高,如果一个用户有 10,000 个关注者,那么我需要阅读 10,000 个文档并更新 10,000 个文档。而且似乎控制权在用户手中,因为如果他们在 1 分钟内更新数据 …
当我的应用程序的用户打开主页时,我需要对服务器进行两次异步调用
首先,我需要获取当前用户数据。然后根据当前的用户数据,我需要获取他最喜欢的餐厅。
我有两种不同的方法从服务器获取这些数据
class MyAPI {
Future<User> getUserData() async {}
Future<List<Restaurant>> getUserData() async {}
}
Run Code Online (Sandbox Code Playgroud)
那么如何使用 Riverpod 在我的主页中构建这 2 个异步方法?
我从 Riverpod 了解到 FutureProvider,但 FutureProvider 仅适用于一种异步服务,对吗?
我是否需要先以某种方式将这两个方法组合成一个方法,然后使用 FutureBuilder?或者是另一种更常用的方式?我不知道
如何解决这个问题。抱歉,我是 Flutter 的初学者
firebase ×4
flutter ×3
ios ×2
swift ×2
typescript ×2
axios ×1
firebase-cli ×1
flutter-test ×1
node.js ×1
riverpod ×1
row-height ×1
uitableview ×1