如何将对象列表添加到Firestore?

时间:2019-04-24 08:07:02

标签: dart flutter google-cloud-firestore

我有一个名为customStep的模型,我想将名为customSteps的customStep列表推送到Firestore。

这是代码:

Firestore.instance
    .collection('customSteps')
    .add({'customSteps': customSteps});

customSteps集合具有文档,这些文档包含customSteps字段以存储customStep数组。但是,此代码将空数组推送到Firestore。我该怎么解决?

3 个答案:

答案 0 :(得分:0)

要将对象推送到Firestore,您需要将对象转换为map,将此函数添加到您的类中:

  Map<String, dynamic> toMap() {
    return {
      'yourField1': yourValue1,
      'yourField2': yourValue1,
    };
  }

要推送customSteps列表,您需要将所有对象转换为map,可以使用以下方法进行操作:

  static List<Map> ConvertCustomStepsToMap({List<CustomStep> customSteps}) {
    List<Map> steps = [];
    customSteps.forEach((CustomStep customStep) {
      Map step = customStep.toMap();
      steps.add(step);
    });
    return steps;
  }

答案 1 :(得分:0)

在Firebase上,您无法在const GraphqlQuery = <T, TVariables = OperationVariables>(props: PropsType) => { const { query, variables, children, user, ...rest } = props; if (!user) return null; return ( <Query<T, TVariables> query={query} variables={variables} context={{ headers: { "X-User-Id": user.id, }, }} {...rest} > ... </Query> ); }; const mapStateToProps = ({ user }: { user: IUserState }) => ({ user, }); export default connect( mapStateToProps, {} )(GraphqlQuery); 内保存自定义模型

您实际上可以做的是创建一个Document和一个CustomStep集合。

在您的CustomSteps内,您可以创建CustomSteps Document的{​​{1}},这实际上是通往不同array文档的路径。

Example of a collection

这意味着每次在Firestore上创建Reference并将其用作引用时都会获取ID。

希望有帮助!

答案 2 :(得分:0)

您需要创建一个地图数组,如下图所示。 该地图将成为您的“对象”。

因此,在模型中,您需要声明:

class Model {
   ArrayList<CheckList> checklist = null
}


class CheckList implements Serializable {
        String item = null,
        boolean isChecked = false
} 

enter image description here enter image description here