Fix update bug with work items and activities. Fix placement of item in AR view

This commit is contained in:
John Lyon-Smith
2018-05-01 09:44:23 -07:00
parent edb078b38a
commit 0dce0b5858
11 changed files with 126 additions and 89 deletions

View File

@@ -111,13 +111,7 @@ export class ActivityRoutes {
}
let Activity = this.db.Activity
let activityUpdates = null
try {
activityUpdates = new Activity(req.body)
} catch (err) {
throw createError.BadRequest("Invalid data")
}
let activityUpdates = req.body
const foundActivity = await Activity.findById(activityUpdates._id)
@@ -127,9 +121,13 @@ export class ActivityRoutes {
)
}
foundActivity.merge(activityUpdates)
// Strip off all BSON types
foundActivity = JSON.parse(JSON.stringify(foundActivity))
const savedActivity = await foundActivity.save()
const mergedActivity = Activity.hydrate(
merge(foundActivity, activityUpdates)
)
const savedActivity = await mergedActivity.save()
res.json(savedActivity.toClient())
}

View File

@@ -1,6 +1,7 @@
import passport from "passport"
import createError from "http-errors"
import autobind from "autobind-decorator"
import merge from "deepmerge"
import { catchAll } from "."
@autobind
@@ -146,15 +147,8 @@ export class WorkItemRoutes {
}
let WorkItem = this.db.WorkItem
let workItemUpdates = null
try {
workItemUpdates = new WorkItem(req.body)
} catch (err) {
throw createError.BadRequest("Invalid data")
}
const foundWorkItem = await WorkItem.findById(workItemUpdates._id)
let workItemUpdates = req.body
let foundWorkItem = await WorkItem.findById(workItemUpdates._id)
if (!foundWorkItem) {
return next(
@@ -162,9 +156,13 @@ export class WorkItemRoutes {
)
}
foundWorkItem.merge(workItemUpdates)
// Strip off all BSON types
foundWorkItem = JSON.parse(JSON.stringify(foundWorkItem))
const savedWorkItem = await foundWorkItem.save()
const mergedWorkItem = WorkItem.hydrate(
merge(foundWorkItem, workItemUpdates)
)
const savedWorkItem = await mergedWorkItem.save()
res.json(savedWorkItem.toClient())
}

View File

@@ -17,7 +17,7 @@ export const workItemSchema = new Schema(
coordinates: [Number],
},
address: String,
photos: [Schema.Types.ObjectId],
photos: [{ type: Schema.Types.ObjectId }],
details: String,
ticketNumber: { type: Number, default: 0 },
},