Fixing some issues found with users and row updates, specifically relationships and numbers.
This commit is contained in:
parent
1a80b09fd0
commit
4b2b375512
|
@ -57,13 +57,15 @@ exports.patch = async function(ctx) {
|
||||||
let row = await db.get(ctx.params.id)
|
let row = await db.get(ctx.params.id)
|
||||||
const table = await db.get(row.tableId)
|
const table = await db.get(row.tableId)
|
||||||
const patchfields = ctx.request.body
|
const patchfields = ctx.request.body
|
||||||
row = coerceRowValues(row, table)
|
|
||||||
|
|
||||||
|
// need to build up full patch fields before coerce
|
||||||
for (let key of Object.keys(patchfields)) {
|
for (let key of Object.keys(patchfields)) {
|
||||||
if (!table.schema[key]) continue
|
if (!table.schema[key]) continue
|
||||||
row[key] = patchfields[key]
|
row[key] = patchfields[key]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
row = coerceRowValues(row, table)
|
||||||
|
|
||||||
const validateResult = await validate({
|
const validateResult = await validate({
|
||||||
row,
|
row,
|
||||||
table,
|
table,
|
||||||
|
@ -89,6 +91,8 @@ exports.patch = async function(ctx) {
|
||||||
|
|
||||||
// Creation of a new user goes to the user controller
|
// Creation of a new user goes to the user controller
|
||||||
if (row.tableId === ViewNames.USERS) {
|
if (row.tableId === ViewNames.USERS) {
|
||||||
|
// the row has been updated, need to put it into the ctx
|
||||||
|
ctx.request.body = row
|
||||||
await usersController.update(ctx)
|
await usersController.update(ctx)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -157,6 +161,8 @@ exports.save = async function(ctx) {
|
||||||
|
|
||||||
// Creation of a new user goes to the user controller
|
// Creation of a new user goes to the user controller
|
||||||
if (row.tableId === ViewNames.USERS) {
|
if (row.tableId === ViewNames.USERS) {
|
||||||
|
// the row has been updated, need to put it into the ctx
|
||||||
|
ctx.request.body = row
|
||||||
await usersController.create(ctx)
|
await usersController.create(ctx)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,15 +64,13 @@ exports.create = async function(ctx) {
|
||||||
exports.update = async function(ctx) {
|
exports.update = async function(ctx) {
|
||||||
const db = new CouchDB(ctx.user.appId)
|
const db = new CouchDB(ctx.user.appId)
|
||||||
const user = ctx.request.body
|
const user = ctx.request.body
|
||||||
const dbUser = await db.get(ctx.request.body._id)
|
|
||||||
if (user.password) {
|
if (user.password) {
|
||||||
user.password = await bcrypt.hash(user.password)
|
user.password = await bcrypt.hash(user.password)
|
||||||
} else {
|
} else {
|
||||||
delete user.password
|
delete user.password
|
||||||
}
|
}
|
||||||
const newData = { ...dbUser, ...user }
|
|
||||||
|
|
||||||
const response = await db.put(newData)
|
const response = await db.put(user)
|
||||||
user._rev = response.rev
|
user._rev = response.rev
|
||||||
|
|
||||||
ctx.status = 200
|
ctx.status = 200
|
||||||
|
|
Loading…
Reference in New Issue