React Native: есть ли простой способ обновить все значения объекта, если данное значение уже существует? - PullRequest
1 голос
/ 18 января 2020

Я пытаюсь работать с данными, используя Flatlist / Sectionlist и т. Д. c ... но я пытаюсь понять, как я могу манипулировать своим набором данных, если заданное значение уже существует?

Скажем, пользователь передает ссылку в мою форму, и эта ссылка уже находится в наборе данных, я хочу иметь возможность обновить все значения связанных свойств:

Я немного поработал над базой данных такие системы, как mongodb, где вы можете просто обновлять данные на основе идентификатора, но поскольку это не полноценная система данных, я не совсем уверен, какой путь выбрать. Вполне может быть что-то простое, когда у меня просто мозговой туман ...

const storedData = [
  {
    url: 'google.com'
    username: 'usernametag',
    content: 'this is some content that will go on forever and ever',
    thumbnail: 'https://url.jpg',
    avatar: 'https://url.jpg',
    media: 'https://url.mp4',
  },
  {
    url: 'sample.com'
    username: 'name',
    content: 'lost content goals lets start with some content forever and ever before we can start ending this hopefully it will last forever',
    thumbnail: 'https://url.jpg',
    avatar: 'https://url.jpg',
    media: 'https://url.mp4',
  },
  {
    url: 'thisisurl.com'
    username: 'another name',
    content: 'lost content goals lets start with some content forever and ever before we can start ending this hopefully it will last forever',
    thumbnail: 'https://url.jpg',
    avatar: 'https://url.jpg',
    media: 'https://url.mp4',
  },
];

Так что, если пользователь отправляет данные, а google.com уже существует, как я могу получить эту спецификацию c блокировать объекты и обновлять все в нем?

Я смог проверить, существует ли google.com, выполнив следующее:

if (!JSON.stringify(storedData).includes('google.com'))

Тогда я бы хотел иметь возможность обновить username, content, thumbnail, avatar, media

Но я не слишком уверен, что это будет лучшим способом сделать это?

Ответы [ 2 ]

1 голос
/ 18 января 2020

Вы можете использовать метод find () в JS

const storedData = [
    {
      url: 'google.com',
      username: 'usernametag',
      content: 'this is some content that will go on forever and ever',
      thumbnail: 'https://url.jpg',
      avatar: 'https://url.jpg',
      media: 'https://url.mp4',
    },
    {
      url: 'sample.com',
      username: 'name',
      content: 'lost content goals lets start with some content forever and ever before we can start ending this hopefully it will last forever',
      thumbnail: 'https://url.jpg',
      avatar: 'https://url.jpg',
      media: 'https://url.mp4',
    },
    {
      url: 'thisisurl.com',
      username: 'another name',
      content: 'lost content goals lets start with some content forever and ever before we can start ending this hopefully it will last forever',
      thumbnail: 'https://url.jpg',
      avatar: 'https://url.jpg',
      media: 'https://url.mp4',
    },
  ];

let selectedObj = storedData.find(item => item.url == 'google.com')

selectedObj.username = 'hello'

console.log(storedData)
0 голосов
/ 18 января 2020

вы можете использовать map, а в функции обратного вызова вы можете проверить URL и вернуть новый объект, если он соответствует.

let newStoredData = storedData.map(urlObject => { 
    if (urlObject.url === "google.com") {
     return {/*new object*/}
    }
    else
     return urlObject
    }
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...