Я хочу сохранить токены устройства какого-либо устройства в ОДНОМ ДОКУМЕНТЕ в РАЗНЫХ ПОЛЯХ.
Вот мой код,
StreamBuilder(
stream: stream,
builder: (BuildContext context,
AsyncSnapshot<List<DocumentSnapshot>> snapshots) {
if (snapshots.connectionState == ConnectionState.active &&
snapshots.hasData) {
return Expanded(
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: snapshots.data.length,
itemBuilder: (BuildContext context, int index) {
DocumentSnapshot doc = snapshots.data[index];
Map location = doc.data;
String fieldname = 'f$index';
var dtoken = location['deviceToken'];
_firestore.collection('deviceTokens').add({
fieldname: dtoken,
});
return Text(
"xyz",
);
},
),
);
} else {
return Center(child: CircularProgressIndicator());
}
},
),
Я хочу сохранить несколько токенов устройства в один документ.
Чтобы быть более понятным,
Когда этот код запускается, я хочу, чтобы в моей базе данных был создан ТОЛЬКО ОДИН ДОКУМЕНТ, в котором есть токены устройств в нескольких полях, например,
в одном документе -
f1: «1-й токен устройства»,
f2: «2-й токен устройства»,
fn: «n-й токен устройства»
Но этот код создает множество документов с разными токенами устройств (1 поле на документ).
Пожалуйста, помогите
ОБНОВЛЕННЫЙ КОД
StreamBuilder(
stream: stream,
builder: (BuildContext context,
AsyncSnapshot<List<DocumentSnapshot>> snapshots) {
if (snapshots.connectionState == ConnectionState.active &&
snapshots.hasData) {
return Expanded(
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: snapshots.data.length,
itemBuilder: (BuildContext context, int index) {
var docid;
if (index == 0) {
_firestore
.collection('devicetokens')
.add({}).then((value) => docid = value);
}
DocumentSnapshot doc = snapshots.data[index];
Map location = doc.data;
String fieldname = 'f$index';
var dtoken = location['deviceToken'];
DocumentReference docss =
_firestore.collection("devicetokens").document(docid);
docss.setData({
fieldname: dtoken,
});
return Text(
"xyz",
);
},
),
);
} else {
return Center(child: CircularProgressIndicator());
}
},
),