开发者问题收集

FirebaseError:函数 addDoc() 调用时数据无效。不支持的字段值

2022-01-25
7761

我尝试将帖子添加到我的 Firebase 数据库,但出现标题所示的错误(未捕获(在承诺中)FirebaseError:使用无效数据调用函数 addDoc()。不支持的字段值:未定义(在文档帖子/5TT9b7F0lkqxoivmsIiH 中的字段标题中找到))。 这是我的代码:

import React, { Component } from 'react';
import { addDoc, collection } from 'firebase/firestore';
import { db } from '../firebaseconf';

class CreatePost extends Component {
    constructor(props) {
        super(props);
        this.state = {
            setTitle: "",
            setPostText: ""
        };
    }

    sTitle = (event) => {
        this.setState({ setTitle: (event.target.value) });
    }

    sPostText = (event) => {
        this.setState({ setPostText: (event.target.value) });
    }

    collectionRef = collection(db, "posts");

    createPost = async () => {
        await addDoc(this.collectionRef, { title: this.setTitle, postText: this.setPostText });
    }

    render() {
        return (
            <div className="cpPage">
                <div className="cpContainer">
                    <h1>Create a Post</h1>
                    <div className="inputGp">
                        <label>Title:</label>
                        <input
                            placeholder="Title..."
                            onChange={this.sTitle}
                        />
                    </div>
                    <div className="inputGp">
                        <label>Post:</label>
                        <textarea
                            placeholder="Write your post..."
                            onChange={this.sPostText}
                        />
                    </div>
                    <button onClick={this.createPost}>Add your post</button>
                </div>
            </div>
        );
    }
}
export default CreatePost;
1个回答

Firebase Firestore 不接受 undefined 作为文档字段之一的值(在您的情况下为 title )。相反,您可以使用 null

(未经测试)示例:

await addDoc(this.collectionRef, {
  title: this.setTitle || null,
  postText: this.setPostText || null,
});
Yaman KATBY
2022-01-25