使用 findOne() 时 NeDB 没有回调
Posted
技术标签:
【中文标题】使用 findOne() 时 NeDB 没有回调【英文标题】:NeDB not calling back when using findOne() 【发布时间】: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
,对吗?
正确。它记录“它甚至执行吗?”但没有“回调”
谢谢。那行得通。
【参考方案1】:
清除我的数据库并再次插入数据修复它
【讨论】:
以上是关于使用 findOne() 时 NeDB 没有回调的主要内容,如果未能解决你的问题,请参考以下文章