问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

croe,零件库安装后启动出现“无法产生应用程序MON”怎么解决?见附图

发布网友 发布时间:2022-04-09 22:48

我来回答

3个回答

懂视网 时间:2022-04-10 03:10

控制器的基本构成与如何通过路由调用

 

控制器中通过建立函数并导出,实现前端对数据库的查询、新建、删除与修改的需求,并使之可以在路由中调用,完成API的封装。本文着重于结构之间的关系,具体问题解决方法将在后文给出。

 

下面代码就是一个简单但完整的控制器文件,命名为comment_controller.js, 存放在~/controllers文件夹下:

 

var config = require(‘../config‘),
  Comment = require(‘../models/comment‘);
 
//根据doctorId查询相关评价 2017-03-30 GY
exports.getCommentsByDoc = function(req, res) {
  //查询条件
  var doctorObject = req.body.doctorObject;
  var query = {doctorId:doctorObject._id};

  //设置参数
  var opts = ‘‘;
  var fields = {‘_id‘:0, ‘revisionInfo‘:0};
  var populate = {path: ‘patientId‘, select:{‘_id‘:0, ‘revisionInfo‘:0}};
 
  Comment.getSome(query, function(err, item) {
   if (err) {
   return res.status(500).send(err.errmsg);
  }
  res.json({results: item});
  }, opts, fields, populate);
}

  

首先声明一些用到的常量,包括全局设置和需要调用的数据模型等。 

然后将方法建立函数并导出,注意建立函数的时候,传入参数为req, res. 其中req为输入参数,使用GET方法(或一些POST方法)时,在URL中的参数通过req.query传入,在POST等方法,在body中的参数通过req.body传入。res为返回参数,一般有两种方式返回:

状态码加信息:(return res.status(500).send(err.errmsg))

或者json格式:(return res.json(result:’error!’))

如果希望导出的函数可以复用到不同路由中组合,也就是使用一个路由调用多个函数,就要允许前面的导出函数可以进行下一步,这就需要在传入的参数中多加一个next, 并在函数中允许进行下一步的位置使用next()函数。

 

仍以这个函数为例,如何在路由中调用呢?

在第1篇中提过的~/routes/routes.js文件:

// self-defined configurations
var config = require(‘../config’);
 
// middlewares
//声明中间件集合
 
// controllers
//声明控制器集合
var doctorCtrl = require(‘../controllers/doctor_controller’);
 
//添加comment_controller.js中声明的函数
var commentCtrl = require(‘../controllers/comment_controller’);
 
module.exports = function(app, webEntry) {
app.get(‘/’, function(req.res) {
 res.send(‘Server Root’);
});
 
//设置路由路径及路径需要调用的函数或组合
app.post(‘/doctor/postDocBasic’, doctorCtrl.insertDocBasic);
app.get(‘/doctor/getDoctorInfo’, doctorCtrl.getDoctorObject, doctorCtrl.getComments, doctorCtrl.getDoctorInfo);
//…
 
//设置方法路由及需要调用的函数
app.get(‘/comment/getComments’, doctorCtrl.getDoctorObject, commentCtrl.getCommentByDoc);
 
};

  


为了便于理解,附上关于doctorCtrl.getDoctorObject的代码: 

 

// doctor_controller.js
var config = require(‘../config’);
var Doctor = require(‘../models/doctor’);
//通过doctor表中userId查询_id 2017-03-30 GY
//修改:增加判断不存在ID情况 2017-04-05 GY
exports.getDoctorObject = function (req, res, next) {
  if (req.query.userId == null || req.query.userId == ‘‘) {
   return res.json({result:‘请填写userId!‘});
  }
 var query = {
 userId: req.query.userId
 };
 Doctor.getOne(query, function (err, doctor) {
 if (err) {
  console.log(err);
  return res.status(500).send(‘服务器错误, 用户查询失败!‘);
 }
 if (doctor == null) {
   return res.json({result:‘不存在的医生ID!‘});
 }
 req.body.doctorObject = doctor;
 next();
 });
};

  


这段代码的目的是输入doctor表里的userId查询到对应条目,并将信息传入到req.body.doctorObject中。可以猜想,这段代码是可以复用的。当然这段代码复用的情况会比较局限,因为比较粗糙,关于这一点,后文将给出更为全面的复用代码。

 

在工程文件夹中运行命令行,运行命令:

node server.js

如果没有错误,会有以下提示:

 技术分享

 

提示内容在server.js中定义。

 

为了测试API是否可用,推荐使用postman应用(google store下载)。在请求框中输入URL:

localhost:4050/comment/getComments

 技术分享

 

点击Params输入键与值,则请求变为:

localhost:4050/comment/getComments?userId=doc01

 技术分享

 

点击Send即可发送请求等待返回,如果一切顺利,会有类似返回:

 技术分享

 

如果是POST等方法,需要在body中输入的,选择下面的body, raw, 并将后面的格式改为JSON:

 技术分享

 

注意端口4050是在setting.js中定义的,请参考本系列第1篇文章。

如果测试本地的工程,可以直接使用localhost, 如果测试部署在其他电脑或服务器上的工程,将localhost换成对应电脑或服务器的IP地址即可。

 

应用Mongoose开发MongoDB(3)控制器(controllers)

标签:封装   get   理解   方法   用户   one   nod   信息   path   

热心网友 时间:2022-04-10 00:18

可能程序不兼容, 可以更换个版本试试。另外建议参考下程序对配置的要求。
或者右键需要运行的程序 选择兼容性 用兼容模式运行试试。

热心网友 时间:2022-04-10 01:36

64位系统需要下载MON64.4.5.dll,放到MONLibs文件夹里,将\MONLibs\MON4.dll改为 MONLibs\MON64.4.5.dll
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
PCR有哪些分类? 不鸣则已 一鸣惊人的三个星座 电动车加装蓝牙音箱怎么接线 怎么把QQ同步助手卸载掉?简直就是垃圾,什么没操作就直接给安装上了,怎... 怎么把QQ同步助手卸载掉?简直就是流氓软件。什么东西没经过我点‘’同 ... excel表如何将相间隔的不同两行组合在一起,成为一行? excel工作表如何对行各自组合 考科目一自己去还是驾校统一去 科目一是自己考还是在驾校 社保转移后,新单位没要转移单,只要了身份证,是不是就可以办理了 什么是社保转移 春晚怎么看弹幕 抖音晚会在电视上哪个台可以看? 极兔快递给送货上门吗? 我想买房子怎么找房源 极兔快递阳西有吗? 买房大家都是怎么找房子的 极兔快递怎么样什么开始运行? 天门有没有极速快递公司,我想加盟极速快递? 小夫妻从顺丰辞职,借电商红利加盟极兔站点,他们最后是否赚到了钱? 2021年陕西宝鸡城乡居民养老保险过交时间十天左右,算交费了吗?_百度问一问 五分钟极速快递如何加盟 想加盟极兔快递?这是什么快递?可靠吗? 陕西城乡养老保险和宝鸡城乡居民养老保险一个手机号是不是都能登录得上? 极兔快递怎么加盟? 宝鸡市城乡居民养老保险认证软件操作时,人头像按钮是灰色的打不开,应该怎么办。请高手回答。谢谢! 牧羊犬价格是多少? 牧羊犬多少钱一只? 牧羊犬现在的价格 全国师范院校中,哪些是985,211工程院校 牧羊犬价格 宽带有包月的吗 电信宽带是否有包月或半年的 宽带有没有包月的 我想办联通的 网线有包月的吗?多少钱? 欧洲各个国家的首都 宽带目前还有包月套餐吗?需要多少钱? 欧洲主要国家和首都 梦见下牙掉了—颗而且碎碎的吐在手上? 欧洲各国首都是哪里? 拉网线可以按月缴费么? 欧洲的主要国家和首都? 欧洲各国的首都名字 欧洲各国的首都 欧洲45个国家及其首都? 欧洲有哪些国家以及他们的首都 欧洲45个国家及首都的英文名称分别是什么? 红心柚子好吃还是白心的好吃? 秽土转生后长门vs鼬,是哪集? 火影动画里鼬被秽土转生和长门一起出来以后,后面还有哪集动画里出来了的?! windows哪些服务可以关闭