【发布时间】: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
-
你说得对,我没看懂,错过了那个。感谢您的帮助。