首页 > 解决方案 > odataclient.query 不是 nodejs 中的函数

问题描述

我的应用程序中有一个函数,它通过调用 ODATA 来返回学生的详细信息。然而,下面的代码返回“this.edmOdataClient.query is not a function”错误。传递给函数的 Id 值为 4B199,9h7dH,ATC3S,fDB5Y,h33Ny,kousB,lTibg,nuGM

下面是我的代码片段

async getStudent(Id) {
    
        try {
            if (Id != undefined) {
                let index: number;
                for (index = 0; index < Id.length; index++) {
                    const element = Id[index];
                    console.log("ELEMENT" +element);
                    this.student = await this.OdataClient.get<any>
                        (
                            this.edmOdataClient
                                .query(`CD_STUDENT`)
                                .filter(new FilterClause("SECTION").eq("A"))
                                .andFilter(new FilterClause("ID").eq(element))
                                .select(["NAME", "GRADE"])
                                .orderBy("ID")
                                ).then(result => result.value[0])
                }
            }
            return this.student;
        }
        catch (error) {
            logger.info(error.message)
            return error;
        }

还有一种方法可以检查 result.value.length 吗?当我试图这样做时,我得到了结果未定义的错误

标签: javascriptnode.js

解决方案


this仅当您的函数属于某个类时才可以调用(另请注意,this除非您绑定函数,否则箭头函数不会响应)

const externalFunc = () => {
  console.log('external func')
}

class MyClass {
  constructor () {
    this.externalFunc = externalFunc.bind(this)
  }

  myFuncOne () {
    console.log('func one')
  }
  
  myFuncTwo () {
    console.log('func two')
    this.myFuncOne()
  }
}

const klass = new MyClass()
klass.myFuncTwo()
// => func two
// => func one

klass.externalFunc()
// => external func

在您的代码中,基本上错误是说getStudent无法到达edmOdataClient,因为它没有绑定到this

您的代码在其中运行的任何类都无权访问edmOdataClient


推荐阅读