【问题标题】:NeDB not calling back when using findOne()使用 findOne() 时 NeDB 没有回调
【发布时间】:2021-07-08 21:12:17
【问题描述】:

我正在为我崭露头角的 Alexa 技能创建 OAuth 2.0 服务,当我使用 NeDB 从客户端数据库获取客户端时,没有回调。

getClient()

module.exports.getClient = async (clientId, clientSecret) => {
    let params = {clientId}
    let result;
    console.log("get client")
    function findClient(params) {
        return new Promise((resolve, reject) => {
            console.log(params)
            clients.loadDatabase()
            console.log('loaded')
            clients.findOne(params, function(err, doc) { // no callback here
                console.log('before reject')
                if (err) return reject(err)
                console.log("callback")
                if (doc.clientSecret) {
                    let secret = doc.clientSecret
                    let id = doc.clientId
                    resolve({clientSecret: secret, clientId: id})
                } else {
                    resolve({clientId: doc.oauth.clientId})
                }
            })
            console.log('does it even exec?')
        })
    }
    console.log(clientSecret)
    if (clientSecret) {
        params.clientSecret = clientSecret
    }
    result = await findClient(params)
    console.log(result)
    return result;
}

这是我提出的要求:

client_id=1
client_secret=secret123
username=testUser
password=testPass

最后是特快路线:

app.post('/oauth/authenticate', (req, res, next) => {
    users.findOne({name: req.body.username}, (err, doc) => {
      if (err) throw err;
      req.body.user = doc

      next();
    })
  }, oauth.authorize({
    authenticateHandler: {
      handle: req => {
        return req.body.user
      }
    }
  }))

编辑:在加载数据库时添加回调时,出现此错误:

loadDatabase Error: More than 10% of the data file is corrupt, the wrong beforeDeserialization hook may be used. Cautiously refusing to start NeDB to prevent dataloss

谢谢!

【问题讨论】:

  • 您的特快专线电话不是getClient吗?或者getClient和显示的快速回调之间应该是什么关系?
  • 我正在使用一个名为 express-oauth2-server 的快速包装器。您可以查看包裹here
  • “没有回调”是否意味着它既不记录before reject也不记录callback,对吗?
  • 正确。它记录“它甚至执行吗?”但没有“回调”
  • 谢谢。那行得通。

标签: node.js express oauth-2.0 nedb


【解决方案1】:

清除我的数据库并再次插入数据修复它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    相关资源
    最近更新 更多