1
我在開發一個應用程序,我想在另一個控制器函數內部使用一個控制器函數。如何才能做到這一點?或者它不能?我可以在另一個控制器內使用控制器嗎?
用例:我想檢查用戶集合(使用mongoDB),如果用戶有權在Patient集合中發佈另一個Patient。我想對我的應用程序實施一些價格計劃方法。
有任何疑問或建議,請評論我會很樂意回答。 謝謝。
user.controller:
'use strict';
/**
* module dependencies
*/
const User = require('../models/user');
const Utilities = require('../models/utilities');
var errHandler = Utilities.errHandler;
var validationErr = Utilities.validationErr;
module.exports = {
getAll: getAll,
put: put,
post:post,
deleteUser: deleteUser,
updateLastLoginDate: updateLastLoginDate,
get: get,
patch:patch
}
/**
* GET user
*/
function get(req, res) {
if (req.user._id == req.params.id) {
return User.findById({ _id: req.params.id }, 'email', (err, user) => {
if (err) {
return res.status(400);
}
if (user) {
return res.json(user);
} else {
return res.status(404);
}
});
} else {
res.status(403);
}
}
patient.controller:
'use strict';
/**
* module dependencies
*/
const Patient = require('../models/patient');
const UserController = require('./user.controller');
const Utilities = require('../models/utilities');
const Logger = require('../config/logger');
var errHandler = Utilities.errHandler;
var validationErr = Utilities.validationErr;
module.exports = {
getAll: getAll,
post: post,
getByNumber: getByNumber,
getByName: getByName
}
/**
* Post patient
* @param id
*/
function post(req, res, done) {
// Check if user has access to the patient
if (req.user._id == req.params.id) {
return Patient.findById({ _id: req.params.id }, (err, patient, done) => {
if (err) {
Logger.debug("userId: %s | error:%s | error in finding patient", req.params.id, err);
return res.status(404);
}
var user = UserController.get(req,res);
Logger.debug("userId: %s | variable %s", req.params.id, a);
// Do if user.pricePlan.maxPatients < patients.count
if (patient) {
patient.name = req.body.name;
patient.email = req.body.email;
patient.phoneNumber = req.body.phoneNumber;
} else {
var patient = new Patient();
patient.name = req.body.name;
patient.registeredIn = new Date();
patient.phoneNumber = req.body.phoneNumber;
patient.userId = req.params.id;
}
patient.save((err, patient) => {
if (err) {
Logger.debug("userId: %s | error:%s | error in saving patient", req.params.id, err);
return res.status(404);
}
Logger.debug("userId: %s | patientId: %s | saving patient", req.params.id, patient._id);
return res.json(patient);
});
});
} else {
Logger.debug("userId: %s | jwt: %s | trying create patient without permission", req.params.id, req.headers.authorization);
res.status(403);
}
}
Shaka謝謝你的好評。中間件是我試圖實施的功能,檢查價格計劃。但我試圖使用負責用戶集合查詢的用戶控制器.. – Ricardo