J'essaie de pousser des statistiques de Kubettes à ma base de données en temps réel en Firebase (pas de Fireestore) et due au caractère spécial "/" dans les touches, Firebase lance une erreur. J'ai essayé de rechercher des problèmes similaires ici, mais ils ne sont pas très similaires à ceux de la mienne (essayé tant de remplacer ou même de supprimer des fonctions mais ne fonctionnaient pas). Voici mes objets:
===== >> L'objet < / p>
Donc, je veux changer le "/" à quelque chose comme "-" sur commande pour pouvoir pousser l'objet entier sur la FireBase. P>
Exemple: p> Veuillez noter que je dois traiter cela dans la capture d'écran d'objet ci-jointe. Donc, je dois traiter ceci: J'utilise JavaScript / Nodejs . je vous remercie beaucoup. p> p>
3 Réponses :
Voici comment vous le faites selon votre structure de données.
P> .ReRuce () code> Référence: Réduire P>
var k8snodes = {
items: [
{
"metadata": {
"labels": {
"beta.kubernetes.io/arch": "amd",
"beta.kubernetes.io/os": "linux"
}
}
},
{
"metadata": {
"labels": {
"kubernetes.io/hostname": "centos-master-node",
"node-role.kubernetes.io/master": "master"
}
}
}
]
}
k8snodes.items.forEach(function(data){
var newK8snodes = Object.keys(data.metadata.labels).reduce((total,currentValue) => {
var newLabelKey = currentValue.replace(/\//g,'-')
var newLabel = {[newLabelKey]: data.metadata.labels[currentValue]}
total = {...total, ...newLabel}
return total;
}, {});
data.metadata.labels = newK8snodes
});
console.log(k8snodes);
Merci Alvin, cela suppose que j'ai une seule chaîne. Dans mon cas, c'est un objet complexe. Comment puis-je boucler pour remplacer cet objet enfant spécifique pour remplacer chaque article? Merci.
@Honshu code mis à jour en fonction de votre structure de données
Impressionnant!! merci @alvin fonctionne bien pour moi. Une seule question de plus si cela ne vous dérange pas, comment puis-je relacer plusieurs caractères spéciaux dans le même code ci-dessus? Firebase n'accepte pas ".", "#", "$", "/", "[" Ou "]" .. "" .. donc dans mon exemple ci-dessus, votre code remplace effectivement le "/" mais j'en ai besoin aussi remplacer le "". .. Merci encore!
Une autre solution simple est
p>
var a = 'beta.kubernetes.io/arch'; console.log(a.replace('/','-'))
const ob = { 'beta.kubernetes.io/arch': 'amd', 'beta.kubernetes.io/os': 'linux', 'kubernetes.io/hostname': 'centos', 'node-role.kubernetes.io/master': 'master' } const newOb = {}; for(var i in ob) { const newKey = i.replace(/\//g,'-') newOb[newKey] = ob[i]; } console.log(newOb);
Merci Gaurav, je pense que je suis si proche. Le problème ici est à nouveau que vous avez obtenu un objet simple, alors que dans mon cas, c'est un objet complexe (dans la capture d'écran ci-jointe). Je dois donc traiter ceci: k8snodes {obj} -> Articles [Ar] -> Metadata {obj} -> Labels {obj} Pour atteindre les touches que je veux remplacer, puis appuyez sur l'objet entier (K8Snodes) à Firebase. Merci.
Avez-vous essayé .replace () fucntion?
Oui, mais n'a pas fonctionné .. j'ai besoin du code JavaScript complet s'il vous plaît. Comment itération sur le tableau / objet à le faire? Merci.