错误:参数“数据”的值不是有效的Firestore文档

时间:2020-05-24 22:05:51

标签: javascript firebase google-cloud-firestore

我正面临错误:firebase上参数“ data”的值。

情况

我试图从本地访问,但是没有用..........

您能确认我的错误吗?

index.js

const functions = require('firebase-functions');

const admin = require('firebase-admin');


admin.initializeApp();


exports.getScreams = functions.https.onRequest((req, res) => {

  admin.firestore().collection('screams').get()
    .then(data => {
      let screams
      data.forEach( doc =>  {
        screams.push(doc.data());
      });
      return res.json(screams);
    })
    .catch((err) => console.error(err));
});


exports.createScreams = functions.https.onRequest((req, res) => {
   const newScreams = {
    body: req.body.body,
    userHandle: req.body.userHandle,
    createdAt: admin.firestore.Timestamp.fromDate(new Date())
   };

   admin
   .firestore()
   .collection('screams')
   .add(newScreams)
   .then(doc => {
     res.json({Message: 'document ${doc.id} created successfully'});
   })
   .catch((err) => {
      res.status(500).json({ error: 'something went wrong'});
    });
    console.error(err);
});

屏幕截图

enter image description here

2 个答案:

答案 0 :(得分:1)

应该是data.docs:

  data.docs.forEach(doc =>  {
    screams.push(doc.data());
  });

答案 1 :(得分:1)

该错误消息表明新文档数据中的body的值为undefined,该值无效。由于您这样设置body

body: req.body.body

似乎req.body.body不存在。您是要使用req.body吗?

如果req.body.body是正确的,但实际上没有任何价值,则您现在可以tell Firestore to ignore the undefined,因此不添加字段。为此,您需要在读取/写入任何内容之前调用以下内容:

const firestore  = admin.firestore();
firestore.settings({ignoreUndefinedProperties:true});