【发布时间】:2017-07-18 12:28:57
【问题描述】:
我正在尝试自己在 nodejs、express 和 mongodb 中创建 OAuth 身份验证流程。我正在尝试在每条路由之前检查客户端是否在我的 MongoDB 中可用。所以我做了一个中间件函数来检查我的数据库中是否有客户端 ID 和客户端密码。这是我的中间件功能
module.exports = function() {
return function(req, res, next) {
// Implement the middleware function based on the options object
winston.info("check client")
User.getClient(req.get("clientId"), req.get("clientSecret"), function (err, client) {
winston.info("checking time");
if (client) {
return next();
} else {
}
});
winston.info("check client done")
}
}
但是当我调用我的猫鼬模型时,我认为我的中间件工作不完美。到异步调用完成时。脚本正在通过。 所以我想在这里实现的是,如果客户端在我们的数据库中可用,则中间件应该通过。所以中间件在得到猫鼬的响应后必须继续前进。这是我的路由器代码。
var express = require('express')
, router = express.Router()
, clientVerify = require("../middlewares/clientVerify");
router.use(clientVerify())
【问题讨论】:
-
你是否尝试用 promise 返回用户对象?
-
没有。你能告诉我一个例子吗?
-
看看this例子
标签: node.js express mongoose middleware