【问题标题】:Why is my Mongoose controller not getting called?为什么我的 Mongoose 控制器没有被调用?
【发布时间】:2021-03-30 02:45:33
【问题描述】:

我正在 Mongoose 和 Express 中创建一个 API,并且已经设置了许多可以正常工作的路由。我正在尝试创建一个路径,该路径通过名称搜索名为 Subassembly 的模型并返回对象 ID。我的问题是我似乎无法启动控制器,而且我不知道为什么或我做错了什么。

我已经在我的 Angular 前端控制台中注销了我的所有函数调用,一切似乎都是正确的。

订阅 Angular 服务调用:

  addSubassembly () {
    const localSubassembly: object = this._subAssemblyService.getSubassemblyByName(formValue);
  }

我的 Angular 服务调用:

  public getSubassemblyByName (name: string): Observable<HttpResponse<any>> {
    return this.http.get<Subassembly>(`${this.subassemblyUrl}name`, { 
      headers: { 'Content-Type': 'application/json' },
      observe: 'response',
      params: {'subassemblyName': name }
    });
  }

Gets 传递给我的 Express 索引(第二个 get 被称为 getByName):

router.get('/subassembly', subassembly.get);
router.get('/subassembly/name', subassembly.getByName);
router.get('/subassembly/:id', subassembly.getById);
router.post('/subassembly', subassembly.create);
router.put('/subassembly/:id', subassembly.modify);
router.delete('/subassembly/:id', subassembly.remove);

调用控制器:

/* jslint node: true, nomen: true */
'use strict';

const Subassembly = require('../../models/subassembly.js');

const getByName = function (req, res) {
    Subassembly.find(req.body).then(function (doc) {
        res.status(200);
        res.send(doc);
    }).catch(function (err) {
        console.error(err);
    })
};

module.exports = getByName;

这都是非常样板的东西,所以我无法弄清楚我做错了什么。还有其他人对我可能缺少的东西有任何建议吗?感谢您的帮助。

【问题讨论】:

  • 你在哪里订阅getSubassemblyByName
  • 我刚刚添加了代码 sn-p 以显示我调用 getSubassemblyByName() 的位置。我在我的 Angualr 组件 ts 文件中将其称为按钮上的单击事件。
  • 调用函数和订阅函数是不一样的。没有订阅,什么都不会发生。 angular.io/guide/observables#subscribing
  • 你说得对,我没看懂,错过了那个。感谢您的帮助。

标签: angular express mongoose


【解决方案1】:

如果在组件ts中调用,则需要订阅该调用

_service.getSubassemblyByName().subscribe(() => {
       // access the name here
});

【讨论】:

  • 最好的做法是尽量不要使用订阅。您会发现它不方便,因为有时您必须手动调用 changeDetectorRef.detectChanges() 才能用新值刷新页面。如果可能,尝试使用async 管道是更好的方法。
猜你喜欢
  • 1970-01-01
  • 2013-04-10
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2022-10-15
相关资源
最近更新 更多