Rethinkdb Append表示属性不存在

时间:2017-07-16 01:25:13

标签: javascript node.js database rethinkdb reql

我一直在用Rethinkdb创建一个数据库。这是我的数据库格式:

{

"Email": blah@blah.com, »
"Password":  "totallyahash1234" 
 ,
"UserName":  "CoolDude3" ,
"id":  "6a4bb963-687a-48c2-b3f0-2e91965d3515" ,

"Projects": {
    "Project1": {
      "Array1": [
        {
          "DataSet1": {
            "Type": "12"
          }
        }
      ],
      "Array2": [],
      "Array3": []
    }
 }
}

然后我尝试将Array 1附加到:

r.table('users').filter(r.row("UserName").eq(UserName)).update(
       {Projects: {Project1: {Array1: 
r.row("Array1").default([]).append(NewDataSet)}}}
    ).run(connection, function(err, result) {
        if (err) throw err;
        console.log(JSON.stringify(result, null, 2));
    });

但是当我这样做时,我收到的错误是:  “错误”:1,   “first_error”:“对象中没有属性Array1: 然而,这个属性显然存在于数据库中。请帮助:)

1 个答案:

答案 0 :(得分:1)

使用r.row,您需要指定Array1的完整路径:

r.table('users').filter(r.row("UserName").eq(UserName)).update(
       {Projects: {Project1: {Array1: 
r.row("Projects")("Project1")("Array1").default([]).append(NewDataSet)}}}
    ).run(connection, function(err, result) {
        if (err) throw err;
        console.log(JSON.stringify(result, null, 2));
    });