该 Web 应用程序使用 Express 作为服务器,Node.js 作为语言,MongoDB 作为数据库,mongoose 作为包装器。Express 在端口 3000 上运行服务器,我正在尝试为集合实现基本的 CRUD 操作。我使用 Newrelic 生成图表,并且当 Express 抛出错误时,响应时间会上升。例如:
User.findOne({ $or: [{ email: { $regex: new RegExp(email, 'i') } }, { userLogin: { $regex: new RegExp(userLogin, 'i') } }] }, 'id').exec()
.then(results => {
if (results) { throw new APIError('email_taken') }
else { return results }
}).then(result => {
res.status(201).success(result)
}, error => {
res.error(error)
})
我真的不理解为什么当ExpressJS抛出像这样的错误时,服务器时间会上升。 我想知道是否我的方法有误或是否有其他更好的方法。 谢谢。
app.use(function (req, res, next) { res.setHeader('Content-Type', 'application/json') res.success = function (obj) { res.send(APIResponse(obj)) } res.error = function (param1, param2) { let error if (param1.constructor === APIError) { error = param1 } else if (typeof (param1) === 'string') { error = new APIError(param1, param2) } else { error = new APIError('unknown') } res.status(error.status).send({ 'success': false, 'error': { 'code': error.code, 'message': error.message } }) } next() })
- Haythem HedfiUser.findOne({ $or: [{ email: { $regex: new RegExp(email, 'i') } }, { userLogin: { $regex: new RegExp(userLogin, 'i') } }] }, 'id').exec() .then(results => { if (results) { throw new APIError('email_taken') } else { return results } }).then(result => { res.status(201).success(result) }, error => { res.error(error) })
- Haythem Hedfi