Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将具有自定义ID的文档添加到firestore_Javascript_Firebase_Google Cloud Firestore - Fatal编程技术网

Javascript 如何将具有自定义ID的文档添加到firestore

Javascript 如何将具有自定义ID的文档添加到firestore,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,是否有机会使用自定义生成的id而不是firestore引擎生成的id向firestore集合添加文档?要使用自定义id,您需要使用。设置,而不是。添加 这将创建一个ID为“LA”的文档: 如果您使用angularfire class Component{ constructor(private afs: AngularFireStore) {} // imported from @angular/fire/firestore addItem() { this.afs.colle

是否有机会使用自定义生成的id而不是firestore引擎生成的id向firestore集合添加文档?

要使用自定义id,您需要使用
。设置
,而不是
。添加

这将创建一个ID为“LA”的文档:


如果您使用angularfire

class Component{
  constructor(private afs: AngularFireStore) {} // imported from @angular/fire/firestore

  addItem() {
    this.afs.collection('[your collection]').doc('[your ID]').set({your: "document"});
  }
}
db.collection(“用户”).document(mAuth.getUid()).set(用户)

这里,集合的名称是
“users”
,文档名称是用户的
UID

这里您需要使用
设置
而不是
添加

private void storeData(String name, String email, String phone) {

    // Create a new user with a first and last name
    Map<String, Object> user = new HashMap<>();
    user.put("name", name);
    user.put("email", email);
    user.put("phone", phone);

    // Add a new document with a generated ID
    db.collection("users").document(mAuth.getUid()).set(user)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            Toasty.success(context,"Register sucess",Toast.LENGTH_SHORT).show();
        }
    });
}
private void storeData(字符串名称、字符串电子邮件、字符串电话){
//使用名字和姓氏创建新用户
Map user=newhashmap();
user.put(“name”,name);
user.put(“email”,email);
user.put(“phone”,phone);
//添加具有生成的ID的新文档
db.collection(“users”).document(mAuth.getUid()).set(user)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公开作废(作废避免){
Toasty.success(上下文,“注册成功”,Toast.LENGTH_SHORT).show();
}
});
}

创建ID为的新文档

  createDocumentWithId<T>(ref: string, document: T, docId: string) {
    return this.afs.collection(ref).doc<T>(docId).set(document);
  }

若要扩展已接受的答案,请在推送到Firestore之前让客户端为文档生成随机ID(假设AngularFire2之外存在相同的
createId()
函数)

这对于在另一个文档中将ID设置为引用字段非常有用,即使在Firestore保存任何内容之前也是如此。如果您不需要立即使用保存的对象,这将通过不让您等待ID来加快进程。
set()
调用现在与您在Angular中可能使用的管道是异步的


请注意,我没有将
id:newId
放在set对象中,因为Firestore默认情况下不会将id保存为文档中的字段

您可以这样做

// Inject AngularFirestore as dependency 
private angularFireStore: AngularFirestore // from from 'angularfire2/firestore'

// set user object to be added into the document
let user = {
  id: this.angularFireStore.createId(),
  name: 'new user'
  ...
}

// Then, finally add the created object to the firebase document
angularFireStore.collection('users').doc(user.id).set(user);

首先给出的代码是针对JavaScript的,这是针对Android Studio(JAVA)的

Map city=newhashmap();
城市。放置(“名称”、“洛杉矶”);
城市。put(“州”、“CA”);
城市。put(“国家”、“美国”);
//这里是用于分配的文档名
db.收集(“城市”)文件(“LA”)
.set(城市)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公开作废(作废避免){
Log.d(标记“DocumentSnapshot已成功写入!”);
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Log.w(标签“错误写入文件”,e);
}
});
要在添加数据时设置ID,必须使用Set方法


如果此代码已过时,请查找新代码

此处的一些解释可能会有所帮助!如果我想在文档中添加“LA”
,该怎么办?这不起作用:
.doc(“LA”).add({…})
请告诉我怎么做。
.add()
相当于
.doc().set()
如果我们想添加custome id,那么我们必须使用.doc().set()而不是add()。如果使用set()方法更新文档字段,请小心,它会杀死文档中未更新的字段。我在一个文档中有6个字段,只更新了4个字段,然后set()方法从firestore的文档中删除了2个字段及其信息。只是分享我的经验。谢谢。
…首先是JavaScript
,你是说
Java
?@phonixstudio这是Java编程
this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
const newId = db.createId();
db.collection("cities").doc(newId).set({
    name: "Los Angeles",
    state: "CA",
    country: "USA"
})

// Inject AngularFirestore as dependency 
private angularFireStore: AngularFirestore // from from 'angularfire2/firestore'

// set user object to be added into the document
let user = {
  id: this.angularFireStore.createId(),
  name: 'new user'
  ...
}

// Then, finally add the created object to the firebase document
angularFireStore.collection('users').doc(user.id).set(user);
Map<String, Object> city = new HashMap<>();
city.put("name", "Los Angeles");
city.put("state", "CA");
city.put("country", "USA");
//Here LA is Document name for Assigning
db.collection("cities").document("LA")
    .set(city)
    .addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            Log.d(TAG, "DocumentSnapshot successfully written!");
        }
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.w(TAG, "Error writing document", e);
        }
    });