добавить файл из состояния в коллекцию FireStore Firestore Firebase ReactJs - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть компонент Action, где я добавляю новый projects к firestore.collection

 export const createProject = (project) => {
      return (dispatch, getState, { getFirebase, getFirestore }) => {

            const firestore = getFirestore();

            firestore.collection('projects').add({
                ...project

            }).then(() => {
                dispatch({})
            }).catch((err) => {
                dispatch({});
            })
        }
    };

И у меня есть компонент:

state = {
      title: '',
      content: '',
      file: ''
    }
    handleChange = (e) => {
        this.setState({
            [e.target.id] : e.target.value
        })
    }
    handleOnFileChange = (e) => {
        let file = e.target.files[0];
        this.setState({
            [e.target.id] : file
        })
    }
    handleSubmit = (e) => {
       e.preventDefault();
       console.log(this.state)
    }



    <form onSubmit={this.handleSubmit}>

       <input type="text" id="title" onChange={this.handleOnFileChange}/>

       <textarea id="content" onChange={this.handleChange}></textarea>

       <input type="file" id="file" onChange={this.handleChange}/>

    </form>

const mapDispatchToProps = (dispatch) => {
    return {
        createProject: (project) => dispatch(createProject(project)) 
    }
}

И после отправки я получаю этоerror: × "FirebaseError: функция DocumentReference.set () вызвана с недопустимыми данными. Неподдерживаемое значение поля: пользовательский объект File (найден в файле поля)"

, если я удаляю file из state, ипопробуйте add это состояние, без file, все работает нормально, и мои проекты добавляют к firestore.collection, но мне нужно добавить к firestore.collection все из состояния (title, content и file)

1 Ответ

0 голосов
/ 26 ноября 2018

Если я не ошибаюсь, это потому, что вы пытаетесь сохранить в Firestore объект типа Файл , который не поддерживается.Смотрите здесь поддерживаемые типы данных https://firebase.google.com/docs/firestore/manage-data/data-types.

Итак, либо вы используете свойство (или несколько свойств) объекта File, например, имя, размер или тип.

или измените код, чтобы сохранить файл в облачном хранилище для Firebase, которое является выделенной службой Firebase для хранения и обслуживания файлов, см. https://firebase.google.com/docs/storage/

Все зависит от ваших конкретных потребностей: сохранениефайл или только некоторые его свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...