Firebase错误函数CollectionReference.doc()



react connecting with firebase中的以下项目存在以下问题代码。一旦单击输入按钮提交消息,就会从数据库中返回错误。(图片如下(。我创建了这个系列";房间";我正试图访问db.collection("rooms"(.doc(channelId(.collection(({}(第17行,该行将从firebase返回错误。

这个错误消息是什么意思?FirebaseError:函数CollectionReference.doc((要求其第一个参数的类型为非空字符串,但它是:true

我删除了firebase.ps1文件并登录回来。创建了一个新的db.collection。

import React, { useState } from "react";
import "./ChatInput.css";
import db from "./firebase";
import { useStateValue } from "./StateProvider";
import firebase from "firebase";
import { Button } from "@material-ui/core";
function ChatInput({ channelName, channelId }) {
const [input, setInput] = useState("");
const [{ user }] = useStateValue();

const sendMessage = (e) => {
e.preventDefault();
if (channelId) {
db.collection("rooms").doc(channelId).collection({
message: input,
timestamp: firebase.firestore.FieldValue.serverTimestamp,
user: user.displayName,
userImage: user.photoURL,
});
}
setInput("");
};

return (
<div className="chatInput">
<form>

<input
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder={`Message #${channelName?.toLowerCase()}`} />
<Button type="submit" onClick={sendMessage}>
SEND</Button>
</form>
</div>
);
}
export default ChatInput;

**还添加了以下代码,但仍然收到相同的问题更改2

函数集合引用错误火球错误

这个错误消息意味着什么?FirebaseError:函数CollectionReference.doc((要求其第一个参数的类型为非空字符串,但它是:true

这意味着您需要传递一个String作为doc()方法的参数。

您正在将channelId传递给doc()方法,它似乎是一个值为true的布尔值。您需要传递一个字符串,该字符串表示Firestore文档的ID。我猜是channelName,不是吗?


此外,您的代码中还有另一个问题:您正在将JavaScript对象传递给collection()方法。


如果你想";提交消息";,例如,您需要在CollectionReference上调用add()方法。

类似于以下内容(我们不知道您要使用的子集合名称,让我们取"messages"(:

db.collection("rooms").doc(channelName).collection('messages')
.add({
message: input,
timestamp: firebase.firestore.FieldValue.serverTimestamp,
user: user.displayName,
userImage: user.photoURL,
}); 

我建议您看一下文档:https://firebase.google.com/docs/firestore/manage-data/add-data

import React, { useState } from "react";
import "./ChatMsg.css";
import db from "./firebase";
import firebase from "firebase";
import { useStateValue } from "./stateProvider";
function ChatMsg({ channelName, channelId }) {
const [input, setInput] = useState("");
const [{ user }] = useStateValue();
const sendMessage = (e) => {

e.preventDefault();
if (channelId) {
db.collection("rooms").doc(channelId).collection('messages').add({
message: input,
user: user.displayName,
timestamp: firebase.firestore.FieldValue.serverTimestamp(),
userimage:user.photoURL


});

}
};
return (
<div className="chatInput">
<form>
<input
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder={`Message # ${channelName}`}
/>
<button type="submit" onClick={sendMessage}>
SEND
</button>
</form>
</div>
);
}
export default ChatMsg;

最新更新