数组函数不是函数

时间:2018-10-26 00:04:04

标签: javascript arrays node.js

我想向数组添加一个函数。这是一个Express Node.js服务器。但这不是重点。

我添加了以下功能。我知道还没准备好(那不是重点)

File: users.cache.js

// Thats my Array
let Users = []



  Users.findOne = function (user) {
  return new Promise((resolve, reject) => {
    if (typeof user === 'string') {
      for (let i = 0; i < Users.length; ++i) {
        if (Users[i].username === user) {
          resolve(Users[i])
        }
      }
    } else if (typeof user === 'number') {
      for (let i = 0; i < Users.length; ++i) {
        if (Users[i].id === user) {
          resolve(Users[i])
        }
      }
    } else {
      reject('Invalid Data Type')
    }
  })
}

 module.exports = {   
  Users    
}

我试图在另一个文件中调用函数。 让我们命名文件:users.service.js

import usersCache from './users.cache'



  selectUser(req, res) {


        usersCache.Users.findOne(req.params.username).then((userData) => { }

}

如果我尝试执行该功能,则会出现以下错误。

TypeError:_users4.default.Users.findOne不是函数

有人可以解释我的错吗?以及解决方法。

谢谢:)

2 个答案:

答案 0 :(得分:0)

好,所以我找到了解决方案。该错误是循环依赖关系,会导致users4_错误消息。解决循环依赖可以解决该问题。

答案 1 :(得分:-1)

更新您的模块导出块。 将其更改为

module.exports = {   
 Users    
}

TO

module.exports = {   
  Users:Users    
}

module.exports是一个对象-具有键值对-您在代码中放入的用户不引用代码中的users函数-仅仅是module.exports对象的属性-将Users对象分配给用户属性-应该可以。