类型错误:listingsRef.add 不是函数。 (在 'listingsRef.add(updatedUploadObjects)' 中,'listingsRef.add' 未定义)

Posted

技术标签:

【中文标题】类型错误:listingsRef.add 不是函数。 (在 \'listingsRef.add(updatedUploadObjects)\' 中,\'listingsRef.add\' 未定义)【英文标题】:TypeError: listingsRef.add is not a function. (In 'listingsRef.add(updatedUploadObjects)', 'listingsRef.add' is undefined)类型错误:listingsRef.add 不是函数。 (在 'listingsRef.add(updatedUploadObjects)' 中,'listingsRef.add' 未定义) 【发布时间】:2022-01-21 03:57:41 【问题描述】:

我正在开发一个列表应用程序,并使用 firebase 作为我的后端,在我添加 .orderBy 语句以通过创建日期对数据进行排序之前,一切正常,我可以在应用程序上更新新帖子,但在我添加之后.orderBy('createdAt', 'desc') 在列表中,我无法更新任何新帖子并且出现错误 "TypeError: listingsRef.add 不是函数。(在'listingsRef.add(updatedUploadObjects)' 中,'listingsRef.add' 未定义) 代码如下:

    import  setFavoriteItems  from '../../../favorites/redux'
import  firebase  from '../../../api/firebase/config'
import ServerConfiguration from '../../../../ServerConfiguration'

const savedListingsRef = firebase
  .firestore()
  .collection(ServerConfiguration.database.collection.SAVED_LISTINGS)
  .orderBy('createdAt', 'desc')
const listingsRef = firebase
  .firestore()
  .collection(ServerConfiguration.database.collection.LISTINGS)
  .orderBy('createdAt','desc')
const ListingCategoriesRef = firebase
  .firestore()
  .collection(ServerConfiguration.database.collection.CATEGORIES)
  .orderBy('order')

还有这个:

 if (selectedItem) 
    listingsRef
      .doc(selectedItem.id)
      .update( ...updatedUploadObjects, photo: coverPhoto )
      .then(docRef => 
        callback( success: true )
      )
      .catch(error => 
        console.log(error)
        callback( success: false )
      )
   else 
    listingsRef
      .add(updatedUploadObjects)
      .then(docRef => 
        if (docRef.id) 
          listingsRef
            .doc(docRef.id)
            .update( id: docRef.id, photo: coverPhoto )
        
        callback( success: true )
      )
      .catch(error => 
        console.log(error)
        callback( success: false )
      )
  

【问题讨论】:

您在此处共享的代码很多。你确定这是minimum needed to reproduce this problem? 感谢您的回复!我现在有最少的代码! 【参考方案1】:

这定义了一个CollectionReference

const savedListingsRef = firebase
  .firestore()
  .collection(ServerConfiguration.database.collection.SAVED_LISTINGS)

如果您检查该链接,您将看到 CollectionReference 具有 add 方法,这意味着您可以向其中添加文档。


这定义了一个Query

const savedListingsRef = firebase
  .firestore()
  .collection(ServerConfiguration.database.collection.SAVED_LISTINGS)
  .orderBy('createdAt', 'desc')

如果您检查最后一个链接,您会发现查询没有 add 方法,因此您不能 add 查询。


您还需要保留CollectionReference,以便您可以为此致电add()

【讨论】:

您好弗兰克,感谢您的回复!我是新手,看到你的回答后,我还有一个问题:你给我看的第二个代码是一个查询,但我发现第一个和第二个之间的唯一不同是我添加了 .orderBy 语句。那么如何将其从查询变为集合呢?谢谢! 谢谢,我明白了,因为 orderBy 返回了一个查询,所以我无法在其中添加数据,但是如何将查询更改为 CollectionReference?

以上是关于类型错误:listingsRef.add 不是函数。 (在 'listingsRef.add(updatedUploadObjects)' 中,'listingsRef.add' 未定义)的主要内容,如果未能解决你的问题,请参考以下文章

类型错误:opendirSync 不是函数

错误类型错误:_co.deleteConsulta 不是函数

类型错误:hbs 不是函数

类型错误:window.initMap 不是函数

类型错误:require.requireActual 不是函数

类型错误:MOD.hasPermissions 不是函数