我正试图通过其“ id”获取特定文档的信息,以显示该文档的信息。
我用于该服务的代码是:
class SentenciasFireBase {
//This is a class where I have all the services of firebase
...
obtenerVacaciones(String empleado) async {
//empleado is the document id
return await Firestore.instance.document('Vacaciones/$empleado');
}
...
}
显示信息的代码是这样的:
class TurnoActual_State extends State<TurnoActual>{
...
SentenciasFireBase objetoSentencias = new SentenciasFireBase();
//This object "metodos" is of a class that has several reusable methods:
Metodos metodos = new Metodos();
@override
void initState() {
objetoSentencias.obtenerVacaciones(_noEmpleado).then((resultados){
setState(() {
vacaciones = resultados;
});
});
}
...
@override
Widget build(BuildContext context){
...
RichText(
text: TextSpan(
//toDateTime is a method that converts a timestamp into a DateTime,
//and then converts the DateTime into a String with a specific date format.
//'Inicio' stores a timestamp (it is the date on which the holidays start):
text: metodos.toDateTime(vacaciones.documents[0].data['Inicio']),
style: TextStyle(
color: Colors.black,
fontSize: 30,
fontWeight: FontWeight.bold,
),
)
)
...
}
这是错误消息:
颤抖:W小工具库引起的异常。
╞═════════════════════════════════════════════════ br
颤抖:构建StreamBuilder时引发以下NoSuchMethodError(脏,状态:
颤动:_StreamBuilderBaseState>#45dbd):
颤抖:在null上调用了getter'documents'
颤动:接收者:null
颤抖:尝试调用:文档
注意:
我对文档的引用是错误的,它不是“ Turnos”:
return await Firestore.instance.document('Turnos/$empleado');
但“ Vacaciones”:
return await Firestore.instance.document('Vacaciones/$empleado');
(我在问题中对其进行了更新),但是无论如何它都不会“影响”问题本身。
答案 0 :(得分:0)
您已经提到了用于访问特定文档记录的集合名称,然后,如果您有多个记录,则可以使用forEach从每个迭代记录中检索docuemntId。
在您的情况下,只需尝试在文档之前添加集合名称。像下面的代码。
Firestore.instance
.collection('collection')
.document(newCategory.field1)
....
});
答案 1 :(得分:0)
由于您正在调用document()
,因此结果将是单个文档。但是,在您的build
方法中,您试图从集合中获取文档:
text: metodos.toDateTime(vacaciones.documents[0].data['Inicio']),
由于vacaciones
是单个文档,因此应该类似于:
text: metodos.toDateTime(vacaciones.data['Inicio']),