#c# #vue.js #firebase-realtime-database #fire-sharp
#c# #vue.js #firebase-realtime-database #огонь-острый
Вопрос:
Я сделал небольшой веб-сайт для семьи и друзей, чтобы угадать имя, пол, дату рождения и т. Д. Нашего следующего ребенка. Я использовал vue в сочетании с базой данных firebase в реальном времени. Теперь я хочу написать консольное приложение на c #, чтобы подтвердить все ставки и указать победителя. Проблема в том, как я настраиваю базу данных:
-Users
-Davy vettorato
-posts
-M5HuYYaUuKgqpD9qdVT
date: "2020-09-23"
gender: "Meisje"
weight: "2550"
length: "52"
name: "Nele"
extra_question: "11:00"
-Dries
-posts
-MAerWe2LjQHGM6vEVur
date: "21/9/2020"
gender: "Meisje"
weight: "4,200"
length: "55"
name: "Elise"
extra_question: "11:45"
-MAerhMgLbAe_sUyg5AE
date: "21/9/2020"
gender: "Jongen"
weight: "4,200"
length: "55"
name: "Thibaut"
extra_question: "11:46"
Я могу получить каждого пользователя, но потом я застреваю. Я хочу размещать объекты для каждого пользователя, полученные из БД. Это то, с чего я уже начал
IFirebaseConfig config = new FirebaseConfig
{
AuthSecret = "//",
BasePath = "https://babyproject-fb0.firebaseio.com/"
};
IFirebaseClient client = new FireSharp.FirebaseClient(config);
if (client != null)
{
Console.WriteLine("Connected");
}
FirebaseResponse response = client.Get("");
var json = response.Body;
var result = JObject.Parse(json);
Кто-нибудь знает, как я могу получить все отдельные ставки каждого пользователя? Я пробовал с selectTokens, но без каких-либо успехов..
Комментарии:
1. Я бы ожидал чего-то вроде
client.Get("User")
, и после этого вам придется перебиратьJObject.ChildrenTokens
: newtonsoft.com/json/help/html /… илиDescendants
список: newtonsoft.com/json/help/html /…2. Спасибо за ваш ответ. Я понял это с помощью метода .children . Тогда я мог бы получить пользователя в качестве JProperty. Я поместил всех своих пользователей в список, который я использовал для построения своего следующего пути. Этот метод снова помогает мне продвинуться дальше во вложенном json.
Ответ №1:
var json = response.Body;
var result = JObject.Parse(json);
foreach (var user in result.Children())
{
Better better = new Better();
if (user is JProperty)
{
var prop = user as JProperty;
better.Name = prop.Name.ToString();
userBetList.Add(better);
var userPosts = result[better.Name]["posts"].Children();
foreach (var post in userPosts)
{
var userPost = post as JProperty;
var betId = userPost.Name.ToString();
var betsOfId = result[better.Name]["posts"][betId].Children();
Bet generatedBet = new Bet();
foreach (var madeBet in betsOfId)
{
var bet = madeBet as JProperty;
if (bet.Name.ToString() == "datum")
{
generatedBet.Datum = DateTime.Parse(bet.Value.ToString());
}
Это пример того, как я устранил проблему. Я думаю, что должен быть более простой способ, но он выполнил свою работу.