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

@@ -1596,6 +1596,11 @@
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
"deepmerge": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.0.tgz",
"integrity": "sha512-Q89Z26KAfA3lpPGhbF6XMfYAm3jIV3avViy6KOJ2JLzFbeWHOvPQUu5aSJIWXap3gDZC2y1eF5HXEPI2wGqgvw=="
},
"default-require-extensions": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz",

View File

@@ -30,6 +30,7 @@
"config": "^1.25.1",
"cors": "^2.8.3",
"credential": "^2.0.0",
"deepmerge": "^2.1.0",
"express": "^4.15.2",
"gridfs-stream": "jlyonsmith/gridfs-stream",
"handlebars": "^4.0.10",

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 },
},