属性 数据库查询 - 未找到 userFunction

Property database query - userFunction is not found

我正在尝试按照 these instructions 查询模型的 属性 数据库。在本地开发服务器上测试时一切正常,但是当我将它部署到 firebase 时出现此错误:

Uncaught (in promise) {msg: "function 'userFunction' was not found."}

下面是我的代码:

const viewerHelperPlugin = {
install(Vue){
Vue.prototype.$viewerHelper = {
  getElementsByPropertyValue: function (viewer, propertyName, propertyValue, operator) {
    return new Promise(function(resolve, reject) {
      function userFunction (pdb, userData) {
        var attrIndex = -1;
        // Iterate over all attributes and find the index to the one we are interested in
        pdb.enumAttributes(function(i, attrDef, attrRaw){
          var name = attrDef.name;
          if (name === userData.propertyName) {
              attrIndex = i;
              return true; // to stop iterating over the remaining attributes.
          }
        });
        // Early return is the model doesn't contain data.
        if (attrIndex === -1)
          return [];

        var returnElements = [];

        pdb.enumObjects(function(dbId) {
          // For each part, iterate over their properties.
          pdb.enumObjectProperties(dbId, function(attrId, valId){
            if (attrId === attrIndex) {
              var value = pdb.getAttrValue(attrId, valId);
              if (userData.operator === "==" && value === userData.propertyValue) {
                  returnElements.push(dbId);
              }
              else if (userData.operator === ">" && value > userData.propertyValue) {
                returnElements.push(dbId);
              }
              else if (userData.operator === ">=" && value >= userData.propertyValue) {
                returnElements.push(dbId);
              }
              else if (userData.operator === "<" && value < userData.propertyValue) {
                returnElements.push(dbId);
              }
              else if (userData.operator === "<=" && value <= userData.propertyValue) {
                returnElements.push(dbId);
              }
              else if (userData.operator === "!=" && value != userData.propertyValue) {
                returnElements.push(dbId);
              }
            }
          });
        });
        return returnElements;
      }
      var thePromise = viewer.model.getPropertyDb().executeUserFunction( userFunction, 
{propertyName: propertyName, propertyValue: propertyValue, operator: operator } );
      thePromise.then(function(retValue){
        resolve(retValue);
      });
    });
  }
}

} }

我不确定为什么它找不到我在语句上方声明的函数。

我相信我明白了。我在我的前端使用 Vue,当我将我的函数从 Vue 实例中拉出并进入全局 JavaScript 范围时,它起作用了。可能与 'userFunction' 名称要求有关? Vue 可能会在构建过程中将函数重命名为自己的格式。