如何更新数据而不删除其他内容?

时间:2018-10-22 14:05:42

标签: javascript firebase firebase-realtime-database

我需要在Firebase实时数据库上设置一个值。

这是我的数据库组织:

class Beispiel_3
{

int value = 0;

public void Execute_Threads()
{
// why is the out put wrong when i ise the varibale "value" here?
//===============================================================
    while (true)
    {
        Monitor.Enter(this);

        value++;
        if (value > 20)
            break;
        Console.WriteLine("Zahl = {0}  | Thread = {1}", value, Thread.CurrentThread.GetHashCode().ToString());
        Monitor.Exit(this);

    }

}
public void Execute_MainThread()
{
    Thread thread1, thread2;
    thread1 = new Thread(Execute_Threads);
    thread2 = new Thread(Execute_Threads);
    thread1.Start();
    thread2.Start();

    Console.ReadLine();
}
static void Main(string[] args)
{
    Beispiel_3 bsp3 = new Beispiel_3();
    bsp3.Execute_MainThread();

}

我将此代码段写入并可以正常工作:

Users:
       U20180422:
                  ID: U20180422
                  Name: "Jason"
                  Surname: "Smith" 
                  Address: "4198 Norma Avenue"
                  Age: "30"
                  creation date: "04/22/2018"
       U20180311: ...
       U20180304: ...
       U20180215: ...
       ...

但是以这种方式删除了存在的数据,并且路径中仅存在account_validated状态。所以我想我必须先检索所有已经拥有的数据,然后将它们与新数据一起发送到数据库。

这在我的代码中不起作用:

<script language="javascript">
//this retrieves from the form of registration the ID of the user
var userId = document.getElementById("searchfield").value;

// Initialize Firebase
  var config = {
    //my configurations
  };
  firebase.initializeApp(config);
  console.log(firebase);

var database = firebase.database();
var ref = database.ref('Users/' + userId);

var data = {
Account_validated = "OK"
}
ref.set(data)
</script>

2 个答案:

答案 0 :(得分:1)

要仅更新您在数据中指定的键,请使用update

var data = {
  Account_validated: "OK"
}
ref.update(data)

这只会更新Account_validated下的ref键,而其他子属性保持不变。

答案 1 :(得分:0)

您看到什么错误?

乍一看,您的for循环中有错别字:

for (var i=0; i < value.lenght; i++)

您输入的长度错误,因此value.lenght将解析为undefined,执行将跳过循环。