当我尝试使用邮递员将数据发布到Firebase时,出现以下错误: 错误:参数“数据”的值不是有效的Firestore文档。不能使用“未定义”作为Firestore值(在字段正文中找到)。
我检查了一下,body和userHandle返回为undefined,但我不知道为什么。与邮递员一起使用POST,然后在正文中发送一个像这样的json:
{
"body": "scream 2",
"userHandle": "user2"
}
作为原始JSON(application / json)
const functions = require('firebase-functions');
const admin = require('firebase-admin');
let firebaseConfig = {
apiKey: '*******',
authDomain: '******',
databaseURL: '*****',
projectId: '*****',
storageBucket: '****',
messagingSenderId: '*****',
appId: '*******'
};
admin.initializeApp(firebaseConfig);
exports.createScream = functions.https.onRequest((req, res) => {
if (req.method !== 'POST') {
return res.status(400).json({ error: 'Method not allowed' });
}
const newScream = {
body: req.body.body,
userHandle: req.body.userHandle,
createdAt: admin.firestore.Timestamp.fromDate(new Date())
};
admin
.firestore()
.collection('screams')
.add(newScream)
.then(doc => {
res.json({ message: `document ${doc.id} created successfully` });
})
.catch(err => {
res.status(500).json({ error: 'something went wrong' });
console.error(err);
});
});
答案 0 :(得分:0)
错误消息是说您要添加到Firestore文档中的字段之一是未定义的:
const newScream = {
body: req.body.body,
userHandle: req.body.userHandle,
createdAt: admin.firestore.Timestamp.fromDate(new Date())
};
由于显示的是所有变量,但我们看不到它们的值,所以我们无法确定哪个变量未定义。您将不得不自行调试此错误,以找出未定义的错误,然后修改代码以检查输入是否有效。
答案 1 :(得分:0)
好吧,这有点奇怪,但是在邮递员中,主体设置为原始JSON(application / json),但我再次将其设置为JSON(application / json),现在可以正常工作了。
答案 2 :(得分:0)