Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
471 views
in Technique[技术] by (71.8m points)

Why can't I append an object to an array in rethinkdb?

I am trying to append an object into an array in rethink. Here is how I am trying to append it:

rethink.table('shifts')
        .get(shiftId)
        .update(row => row("milestones").default([]).append({
            dateAchieved: "2017-01-01",
            phaseType: "TEST"
        })).run(rethinkConnection)

The error I get is this:

first_error: 'Inserted value must be an OBJECT (got ARRAY):
[
	{
		"dateAchieved":	"2017-01-01",
		"phaseType":	"TEST"
	}
]',

I also tried the same code about, but removed .default([]), which did not change anything.

I have tried logging out what row('milestones') is and this is the result:

var_15("milestone")

I was expecting to see an array. What else is necessary to add an object to an array? How do I make this work?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need to update document with a document not an array. Your reql should look like this

rethink.table('shifts')
  .get(shiftId)
  .update({
    milestones: rethink.row('milestones').append({
      dateAchieved: "2017-01-01",
      phaseType: "TEST"
    })
  })
  .run(rethinkConnection)

this is because the .append command does not commit data to the database it only returns an in memory modified array


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...