Lak*_*h22 7 dart firebase flutter google-cloud-firestore
我想在Flutter应用中向Google Cloud Firestore添加对象,如下所示:

我已经做了一个Reply类:
class Reply {
Reply(this.replyName, this.replyText, this.replyVotes);
final String replyName;
final String replyText;
final String replyVotes;
String getName() {
return replyName;
}
String getText() {
return replyText;
}
String getVotes() {
return replyVotes;
}
}
Run Code Online (Sandbox Code Playgroud)
如何将Reply对象添加到Cloud Firestore?
编辑:
只是为了澄清,我想创建一个具有Object其中包含字段的数据类型的字段:Reply Object Image
bla*_*eil 11
首先,我强烈建议您使用一个定义所有模式和/或模型的文件,以便为您的数据库结构提供一个参考点。例如一些名为dbSchema.dart的文件:
import 'package:meta/meta.dart';
class Replies {
final String title;
final Map coordinates;
Replies({
@required this.title,
@required this.coordinates,
});
Map<String, dynamic> toJson() =>
{
'title': title,
'coordinates': coordinates,
};
}
Run Code Online (Sandbox Code Playgroud)
并将要成为对象的字段键入Map。然后,在要插入到数据库的页面上,导入dbSchema.dart并创建一个新模型:
Replies _replyObj = new Replies(
title: _topic,
coordinates: _coordinates,
);
Run Code Online (Sandbox Code Playgroud)
这假定您已在此之前定义了本地_coordinates(或其他)对象,例如:
_coordinates = {
'lat': '40.0000',
'lng': '110.000',
};
Run Code Online (Sandbox Code Playgroud)
然后插入到Firestore中,添加对象的toJson方法(您不能插入/更新普通的Dart模型):
CollectionReference dbReplies = Firestore.instance.collection('replies');
Firestore.instance.runTransaction((Transaction tx) async {
var _result = await dbReplies.add(_replyObj.toJson());
....
Run Code Online (Sandbox Code Playgroud)
说这是你的对象。
class MyObject {
final String foo;
final int bar;
MyObject._({required this.foo, required this.bar});
factory MyObject.fromJson(Map<String, dynamic> data) {
return MyObject._(
foo: data['foo'] as String,
bar: data['bar'] as int,
);
}
Map<String, dynamic> toMap() {
return {
'foo': foo,
'bar': bar,
};
}
}
Run Code Online (Sandbox Code Playgroud)
要将此对象添加到云 Firestore,请执行以下操作:
MyObject myObject = MyObject.fromJson({'foo' : 'hi', bar: 0}); // Instance of MyObject.
var collection = FirebaseFirestore.instance.collection('collection');
collection
.add(myObject.toMap()) // <-- Convert myObject to Map<String, dynamic>
.then((_) => print('Added'))
.catchError((error) => print('Add failed: $error'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6647 次 |
| 最近记录: |