Fixing some issues found with users and row updates, specifically relationships and numbers.
This commit is contained in:
parent
28e2ce28ba
commit
5ba9f1a65e
|
@ -57,13 +57,15 @@ exports.patch = async function(ctx) {
|
|||
let row = await db.get(ctx.params.id)
|
||||
const table = await db.get(row.tableId)
|
||||
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)) {
|
||||
if (!table.schema[key]) continue
|
||||
row[key] = patchfields[key]
|
||||
}
|
||||
|
||||
row = coerceRowValues(row, table)
|
||||
|
||||
const validateResult = await validate({
|
||||
row,
|
||||
table,
|
||||
|
@ -89,6 +91,8 @@ exports.patch = async function(ctx) {
|
|||
|
||||
// Creation of a new user goes to the user controller
|
||||
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)
|
||||
return
|
||||
}
|
||||
|
@ -157,6 +161,8 @@ exports.save = async function(ctx) {
|
|||
|
||||
// Creation of a new user goes to the user controller
|
||||
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)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -64,15 +64,13 @@ exports.create = async function(ctx) {
|
|||
exports.update = async function(ctx) {
|
||||
const db = new CouchDB(ctx.user.appId)
|
||||
const user = ctx.request.body
|
||||
const dbUser = await db.get(ctx.request.body._id)
|
||||
if (user.password) {
|
||||
user.password = await bcrypt.hash(user.password)
|
||||
} else {
|
||||
delete user.password
|
||||
}
|
||||
const newData = { ...dbUser, ...user }
|
||||
|
||||
const response = await db.put(newData)
|
||||
const response = await db.put(user)
|
||||
user._rev = response.rev
|
||||
|
||||
ctx.status = 200
|
||||
|
|
Loading…
Reference in New Issue