Как изменить элемент в объекте, используя JavaScript для замены специальных символов, которые не принимаются Firebase - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь отправить некоторые статистические данные Kubernetes в мою базу данных реального времени Firebase (не Firestore), и из-за специального символа "/" в ключах Firebase выдает ошибку.Я попытался найти подобные проблемы здесь, но они не совсем похожи на мои (пробовал так много заменять или даже удалять функции, но не работал).Вот мои объекты:

===== >> ОБЪЕКТ

Поэтому я хочу изменить "/" на что-то вроде "-", чтобыбыть в состоянии выдвинуть весь объект как в Firebase.

Пример:

beta.kubernetes.io/arch --> beta.kubernetes.io-arch
beta.kubernetes.io/os --> beta.kubernetes.io-os
kubernetes.io/hostname --> kubernetes.io-hostname
node-role.kubernetes.io/master --> node-role.kubernetes.io-master

Обратите внимание, что мне нужно обработать это на скриншоте прикрепленного объекта.Поэтому мне нужно обработать это: k8snodes {obj} -> items [arr] -> метаданные {obj} -> label {obj} для того, чтобы добраться до ключей , которые я хочу заменить, а затем отправить весь объект (k8snodes) в базу данных.

Я использую Javascript / NodeJS.Спасибо огромное.

Ответы [ 3 ]

0 голосов
/ 10 февраля 2019

другое простое решение -

var a = 'beta.kubernetes.io/arch';
console.log(a.replace('/','-'))
0 голосов
/ 10 февраля 2019
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);
0 голосов
/ 10 февраля 2019

Вот как вы делаете это в соответствии с вашей структурой данных.

.reduce() ссылка: уменьшение

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...