这是我到目前为止的控制器
router.get('/:scribbleId',function(req,res,next) {
scribble.findOne({_id:req.params.scribbleId},function(err,object) {
if(err)
res.status(500).end();
if(object == null)
res.status(404).end();
else {
if(object.owner == req.user) {
res.status(200).json(object);
}else if(object.is_public == true) {
res.status(200).json(object);
}else {
res.status(403).end();
}
}
});
});
并且在middleware
级
Router
var user = require('../models/User.js');
var jwt = require('jsonwebtoken');
var config = require('../settings');
module.exports = function (req,res,next) {
var token = req.get("authorization");
if (!token) {
res.set("WWW-Authenticate", "Basic realm=\"Authorization Required\"");
res.status(403).send("Authorization Required");
}else {
jwt.verify(token,config.secret,function(err,decoded) {
if(err) {
res.set("WWW-Authenticate", "Basic realm=\"Authorization Required\"");
res.status(403).send("Authorization Required");
}else {
userId = decoded.id;
req.user = userId;
next();
}
});
}
};
mocha
测试在操作中花费大量时间的问题。以下是一些案例
Tests for GET verb
✓ Root endpoint returns 403 without token
✓ Root endpoint should return 200 with valid token (94ms)
✓ Return proper json object if owner (109ms)
✓ Return proper json object if public (88ms)
✓ Return 404 if scribble not found (91ms)
作为nodejs
和red
颜色标记的新手,我假设我写的代码不是最有效的代码。我需要帮助的是确定我哪个部分出错并进行阻止。如果您还可以链接一些我可以用来描述快速应用程序的工具,也将不胜感激。
请注意,我只是在谈论当前控制器是否正确写入。不是关于我知道的缓存部分可以提高我的api的效率。
答案 0 :(得分:0)
我认为您的代码非常有效。我敢打赌,因为您的Mocha测试是针对真实的HTTP服务器运行的,红色时间戳是设置和拆除TCP连接成本的地方。
为了加快速度,您可以公开控制器代码并使用Mocha直接测试它。您可能还希望将相同的模式应用于中间件代码。