¿Cómo convertiría mis nuevos datos de objetos? Estoy recuperando de Firebase a la forma de JSON como lo había hecho antes
-
21-12-2019 - |
Pregunta
Acabo de configurar mi base de datos de Firebase, AngularFire con mi aplicación Yeoman, Angularjs.Yo uso al código duro Mis datos antes, así
$scope.data = [
{ name: 'NAME', description: 'DESCRIPTION', type: 'TYPE', etc: 'ETC', etc: 'ETC', etc: 'ETC'... },
{ name: 'NAME', description: 'DESCRIPTION', type: 'TYPE', etc: 'ETC', etc: 'ETC', etc: 'ETC'... },
{ name: 'NAME', description: 'DESCRIPTION', type: 'TYPE', etc: 'ETC', etc: 'ETC', etc: 'ETC'... },
...
...
More Data...
...
...
{ name: 'NAME', description: 'DESCRIPTION', type: 'TYPE', etc: 'ETC', etc: 'ETC', etc: 'ETC'... }
]
Cuando subí los datos anteriores en mi base de datos de Firebase, tuve que tener una forma válida de datos JSON, así que la convirtié a este
[
{ "name": "NAME", "description": "DESCRIPTION", "type": "TYPE", "ect": "ETC","ect": "ETC","ect": "ETC"... },
{ "name": "NAME", "description": "DESCRIPTION", "type": "TYPE", "ect": "ETC","ect": "ETC","ect": "ETC"... },
{ "name": "NAME", "description": "DESCRIPTION", "type": "TYPE", "ect": "ETC","ect": "ETC","ect": "ETC"... },
...
...
]
que es un formato JSON válido.Ahora, cuando consuelo.log (FireBasereF), mis datos se recuperan en el siguiente formulario.Esto es exactamente lo que veo en mi consola de Google Chrome.
Object {$bind: function, $add: function, $save: function, $set: function, $transaction: function…}
0: Object
description: "DESCRIPTION""
name: "NAME"
type: "TYPE""
etc: "ETC"
etc: "ETC"
etc: "ETC"
...more data...
__proto__: Object
1: Object
description: "DESCRIPTION""
name: "NAME"
type: "TYPE""
etc: "ETC"
etc: "ETC"
etc: "ETC"
...more data...
__proto__: Object
2: Object
description: "DESCRIPTION""
name: "NAME"
type: "TYPE""
etc: "ETC"
etc: "ETC"
etc: "ETC"
...more data...
__proto__: Object
...
...
...More Data...
...
...
¿Cómo convertiría mis nuevos datos de objetos, estoy recuperando de la Firstbase a la misma forma que antes?
Aquí hay una imagen de la principal diferencia entre los dos.Los datos de la Firebase que estoy recibiendo parece ser un objeto con múltiples objetos en ella y los datos que quiero / usar antes es una matriz de múltiples objetos.
Solución
De acuerdo con esta URL: Objeto a la matriz - Conversión rápida
Debe asignar el objeto Firebase a una variable:
$scope.firebaseObj
y luego puedes meterlo en su objeto $ scope.data por:
$scope.data = [];
for (var i = 0; i < $scope.firebaseObj.length; i++) {
$scope.data[i]['name']= $scope.firebaseObj[i].name;
$scope.data[i]['description']= $scope.firebaseObj[i].description;
$scope.data[i]['type'] = $scope.firebaseObj[i].type;
$scope.data[i]['etc1'] = $scope.firebaseObj[i].etc1;
$scope.data[i]['etc12'] = $scope.firebaseObj[i].etc2;
.
.
.
}
Esto solo funcionará si cada elemento en el JSON tiene los mismos atributos