Отправьте массив в облачной функции firebase в базу данных реального времени, используя javascript - PullRequest
0 голосов
/ 25 мая 2020
• 1000 но все же у меня есть проблема с хранилищем словаря в журнале firebase в виде строки

код облачной функции:

exports.createProduct = functions.https.onRequest((req, res) => {
    if (req.method !== 'POST') {
        return res.status(500).json({
            message: 'not allowed'
        })
    }
    console.log(req.body.variants)
    var firebaseRef = db.ref("product").push();
    firebaseRef.set({
        variants: req.body.variants
    });
    res.status(200).json({
        message: req.body
    });
});

варианты, когда я отправляю:

variants:["Key":["items1","items2","items3"]]

store в журнале firebase вот так:

variants: "[\"Key\":[\"items1\",\"items2\",\"items3\"]]"

1 Ответ

0 голосов
/ 25 мая 2020

На этом последнем снимке экрана похоже, что вы отправляете строку, и это то, что хранит Firebase.

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

firebaseRef.set({
  variants: JSON.parse(req.body.variants);
})

Кажется, у вас также есть синтаксическая ошибка в JSON:

"[\"Key\":[\"items1\",\"items2\",\"items3\"]]"

Ближайшее, что я могу сделать, это:

"[{\"Key\":[\"items1\",\"items2\",\"items3\"]}]"

Или

"{\"Key\":[\"items1\",\"items2\",\"items3\"]}"

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

'[{"Key":["items1","items2","items3"]}]'

Я рекомендую не создавать JSON путем конкатенации строк, но вместо этого используется JSON.stringify() для предотвращения генерации недействительных JSON.

JSON.stringify([{Key: ["items1", "items2", "items3"]}])

Что дает:

"[{"Key":["items1","items2","items3"]}]"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...