Major performance boost to attachLinks -> makes CSV upload much more snappy.
This commit is contained in:
parent
1fd8d559aa
commit
efce1c839e
|
@ -88,23 +88,24 @@ exports.attachLinkInfo = async (instanceId, records) => {
|
|||
records = [records]
|
||||
wasArray = false
|
||||
}
|
||||
let modelIds = [...new Set(records.map(el => el.modelId))]
|
||||
// start by getting all the link values for performance reasons
|
||||
let responses = await Promise.all(
|
||||
records.map(record =>
|
||||
let responses = [].concat.apply(
|
||||
[],
|
||||
await Promise.all(
|
||||
modelIds.map(modelId =>
|
||||
getLinkDocuments({
|
||||
instanceId,
|
||||
modelId: record.modelId,
|
||||
recordId: record._id,
|
||||
modelId: modelId,
|
||||
includeDocs: IncludeDocs.EXCLUDE,
|
||||
})
|
||||
)
|
||||
)
|
||||
// can just use an index to access responses, order maintained
|
||||
let index = 0
|
||||
)
|
||||
// now iterate through the records and all field information
|
||||
for (let record of records) {
|
||||
// get all links for record, ignore fieldName for now
|
||||
const linkVals = responses[index++]
|
||||
const linkVals = responses.filter(el => el.thisId === record._id)
|
||||
for (let linkVal of linkVals) {
|
||||
// work out which link pertains to this record
|
||||
if (!(record[linkVal.fieldName] instanceof Array)) {
|
||||
|
|
|
@ -27,10 +27,12 @@ exports.createLinkView = async instanceId => {
|
|||
let doc2 = doc.doc2
|
||||
emit([doc1.modelId, doc1.recordId], {
|
||||
id: doc2.recordId,
|
||||
thisId: doc1.recordId,
|
||||
fieldName: doc1.fieldName,
|
||||
})
|
||||
emit([doc2.modelId, doc2.recordId], {
|
||||
id: doc1.recordId,
|
||||
thisId: doc2.recordId,
|
||||
fieldName: doc2.fieldName,
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue