У меня длинная форма с более чем 80 полями ввода. После отправки он работает нормально и сохраняет данные в базе данных neo4j. Мне нужна функция «Сохранить черновик» на случай, если пользователи захотят заполнить форму позже. Как я могу это реализовать?

Редактировать:

Я пытаюсь сохранить данные формы (включая пустые поля ввода) в базе данных neo4j.

У меня есть массив и форма в конструкторе:

constructor(props){
        super(props);
        this.state = {
            mydata: {
                data1: {},
                data2: {},
            }
        };
        this.saveAsDraft = this.saveAsDraft.bind(this);
        <form>
            <MyInput 
                title="Name" 
                inputs={[{title: "name", inputType: "text" }]} 
                onChange={this.handleChange}
                type="freeText"
            />
            <MyInput 
                title="Email" 
                inputs={[{title: "email", inputType: "text" }]} 
                onChange={this.handleChange}
                type="freeText"
            />
        </form>
}

И я использовал следующий метод для обработки отправки формы:

async saveAsDraft(){
    const name = this.state.mydata['data1']['name'];
    const email = this.state.mydata['data1']['email'];

    const neo4j = require('neo4j-driver')

    const driver = neo4j.driver('bolt://localhost:7687', neo4j.auth.basic('neo4j', 'pass'))
    const session = driver.session({database: 'neo4j'})
    const txc = session.beginTransaction()
    try {
       const result = await txc.run(
                'CREATE (:Person { name: $name, email: $email })',
                {
                    name: name, 
                    email: email                    
                }
              )
  await txc.commit()
        console.log('commited')
    } catch (error) {
        console.log(error) 
        await txc.rollback()
        console.log('rolled back') 
    } finally {
        await session.close()
    }
}

Работает, когда поля ввода заполнены. Но когда поля ввода пусты, он показывает следующую ошибку:

Neo4jError: Expected parameter(s): name, email

Как я могу обрабатывать здесь пустые поля ввода? Я хочу выполнить зашифрованные запросы и создать узлы и отношения с пустыми входными значениями. Мне также нужно извлечь данные позже, чтобы заполнить их в форме, когда пользователь захочет продолжить редактирование формы позже.

0
Raman 15 Ноя 2021 в 18:26
Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
 – 
Community
17 Ноя 2021 в 12:53

1 ответ

Лучший ответ

Если требуется получить доступ к ответам формы с разных устройств или браузеров, вам придется сохранить данные в базе данных.

Если достаточно того, что пользователи могут получить доступ к сохраненным данным формы только в том же браузере, вы можете использовать локальное хранилище для этого. Некоторые библиотеки управления состоянием, такие как redux и mobxstate tree, предлагают функцию сохранения, поэтому вы можете сохранить все состояние вашего приложения в локальном хранилище с незначительной конфигурацией.

0
AlyxByte 15 Ноя 2021 в 18:35
Пользователи смогут заполнить форму позже, это может произойти через несколько дней или недель. и эти черновики будут отображаться на странице профиля.
 – 
Raman
15 Ноя 2021 в 18:38
Вы можете привести какой-нибудь пример?
 – 
Raman
15 Ноя 2021 в 19:06
Для отправки данных формы необходимо заполнить все поля ввода. Как работать с обязательными полями при сохранении данных как черновика?
 – 
Raman
17 Ноя 2021 в 19:02
Вопрос обновлен
 – 
Raman
19 Ноя 2021 в 14:30