EasyFM - v5.0.0-beta.1
    Preparing search index...

    Working With Records

    This guide covers common record operations once you already have a layout.

    const records = await layout.records.list({
    portals: {},
    limit: 100,
    offset: 1
    }).fetch()
    const operation = layout.records.list({
    portals: {},
    limit: 1000
    })

    for await (const record of operation.iterate(100)) {
    console.log(record.recordId)
    }

    Use this when you do not want every record loaded at once.

    const record = await layout.records.get(123)
    

    123 here is FileMaker recordId.

    Usually better to find by business field where possible.

    const record = await layout.records.create({
    portals: []
    })

    record.fields.FirstName.value = "Ada"
    record.fields.LastName.value = "Lovelace"

    await record.commit()

    create() builds an unsaved record shell. commit() persists it.

    const record = await layout.records.get(123)
    record.fields.Status.value = "Archived"
    await record.commit()
    await record.get()
    

    Use this when you want latest server state after changes elsewhere.

    const record = await layout.records.get(123)
    const copy = await record.duplicate()
    const record = await layout.records.get(123)
    await record.delete()
    const records = await layout.records.list({
    portals: {
    LineItems: {
    offset: 1,
    limit: 50
    }
    },
    limit: 10
    }).fetch()

    for (const row of records[0].portals.LineItems.records) {
    console.log(row.fields.ProductName.value)
    }

    Portal rows are only included when requested.

    await record.commit({
    scripts: {
    prerequest: database.script("BeforeSave"),
    after: database.script("AfterSave")
    }
    })