问题
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):\n[\n\t{\n\t\t"dateAchieved":\t"2017-01-01",\n\t\t"phaseType":\t"TEST"\n\t}\n]',
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?
回答1:
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
来源:https://stackoverflow.com/questions/47725272/why-cant-i-append-an-object-to-an-array-in-rethinkdb