扑火,在数组中添加新对象

Sam*_*lah 4 firebase flutter google-cloud-firestore

我有对象数组,我想在用户在数组中输入新数据时添加新对象吗?

Firestore.instance.collection(city).document('Attractions').updateData(
                        "data", FieldValue.arrayUnion(obj)
                      );
Run Code Online (Sandbox Code Playgroud)

这显示了错误,如何用颤振来实现?

Jac*_*ack 10

@anmol.majhail 是对的,但是要解决@Sami Ullah 的问题,您必须先创建一个列表并将对象添加到列表中,如下所示:

var list = [objectBeingAdded];
Firestore.instance.collection('city').document('Attractions').updateData({"data": FieldValue.arrayUnion(list)});

Run Code Online (Sandbox Code Playgroud)


anm*_*ail 9

正确的格式是:

Firestore.instance.collection(city).document('Attractions').updateData({"data": FieldValue.arrayUnion(obj)});
Run Code Online (Sandbox Code Playgroud)

updateDataMap<String,dynamic>数据为准。

在您的代码中,您正在,作为键-值之间的分隔符,而应该是:

  • FieldValue.arrayUnion 接受一个列表。使用它应该可以修复您的错误 - Firestore.instance.collection(city).document('Attractions').updateData({"data": FieldValue.arrayUnion([obj])}); (4认同)

Cop*_*oad 7

空安全代码:

假设这是您要添加的数据

Map<String, dynamic> someData = {
  'foo': 1,
  'bar': true,
};
Run Code Online (Sandbox Code Playgroud)
  • 添加具有唯一自动生成 ID 的数据:

    var collection = FirebaseFirestore.instance.collection('collection');
    collection 
        .add(someData) 
        .then((_) => print('Added'))
        .catchError((error) => print('Add failed: $error'));
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用您自己的 ID 添加数据:

    var collection = FirebaseFirestore.instance.collection('collection');
    collection 
        .doc('document_id') // <-- Document ID
        .set(someData) 
        .then((_) => print('Added'))
        .catchError((error) => print('Add failed: $error'));
    
    Run Code Online (Sandbox Code Playgroud)
  • 将对象添加到数组中:

    var collection = FirebaseFirestore.instance.collection('collection');
    collection 
        .doc('document_id') // <-- Document ID
        .set({'data': FieldValue.arrayUnion(list)}) // <-- Add data
        .then((_) => print('Added'))
        .catchError((error) => print('Add failed: $error'));
    
    Run Code Online (Sandbox Code Playgroud)