ensure user metadata is created before link documents are created
This commit is contained in:
parent
ab8d942065
commit
ccb7f67458
|
@ -1,6 +1,6 @@
|
|||
const CouchDB = require("../index")
|
||||
const { IncludeDocs, getLinkDocuments } = require("./linkUtils")
|
||||
const { generateLinkID } = require("../utils")
|
||||
const { generateLinkID, InternalTables, generateUserMetadataID, getUserMetadataParams } = require("../utils")
|
||||
const Sentry = require("@sentry/node")
|
||||
const { FieldTypes, RelationshipTypes } = require("../../constants")
|
||||
|
||||
|
@ -208,6 +208,15 @@ class LinkController {
|
|||
const linkedTable = await this._db.get(field.tableId)
|
||||
const linkedSchema = linkedTable.schema[field.fieldName]
|
||||
|
||||
// We need to map the global users to metadata in each app for relationships
|
||||
if (field.tableId === InternalTables.USER_METADATA) {
|
||||
const users = await this._db.allDocs(getUserMetadataParams(null, {}))
|
||||
const metadataRequired = rowField.filter(userId => !users.rows.some(user => user.id === userId))
|
||||
|
||||
// ensure non-existing user metadata is created in the app DB
|
||||
await this._db.bulkDocs(metadataRequired.map(userId => ({ _id: userId })))
|
||||
}
|
||||
|
||||
// iterate through the link IDs in the row field, see if any don't exist already
|
||||
for (let linkId of rowField) {
|
||||
if (linkedSchema.relationshipType === RelationshipTypes.ONE_TO_MANY) {
|
||||
|
|
Loading…
Reference in New Issue