不将数据从服务方法传递到猫鼬获取路由以使用 Angular IO 查询数据
Posted
技术标签:
【中文标题】不将数据从服务方法传递到猫鼬获取路由以使用 Angular IO 查询数据【英文标题】:Not passing Data from service method to the mongoose get route to query for data using Angular IO 【发布时间】:2019-10-12 14:47:55 【问题描述】:我正在从模板获取数据到组件层,然后将其传递给服务文件。我在两个级别的console.log()
中都看到了它。当我在我想在服务器中命中的路由旁边的方法中传递变量时,它没有被传递或者我没有正确访问它(可能是这种情况)并且我已经以我知道的方式弯曲了这个。
当我在 NodeJS 服务器中console.log()
(使用 express、body-parser 和 mongoose)时,它会返回 和
req.body
,如果我尝试在结束。只需 req 我就得到了巨大的响应,但解析所有我能真正看到的信息是方法键/值和我尝试使用我的服务文件方法访问的路由的键/值。
我已经尝试了我能想到的所有方法,我在邮递员中使用了该路线,并且效果很好。
我 console.loged req req.params 和 req.URL 没有成功。
其他文件(组件和服务)是 console.logging
数据,所以我知道它是从模板中的 *ngFor
传递的,该模板返回对存储在数据库中的所有“tasks
”的查询(键是标题、描述和默认设置 false )。我真的不知道还能做什么。
我昨天也遇到了同样的问题,使用删除方法和findByIdAndDelete
mongoose 方法。 id
作为字符串从模板一直传递到service file
,但由于某种原因没有出现在req, req.body, or req.body._id
中。组件和服务文件中的console.log()
显示了这个。
mongoose express / using json with the body-parser to return data
app.get('/task-info', function(req, res)
console.log('SERVER_:', req.body._id);
Task.findById(_id: req.body.id, function(err, task)
if(err)
console.log('ERROR_QUERY_FOR_DATA_INFO:', err)
res.json(message: 'ERROR_QUERY_FOR_DATA_INFO', data: err)
else
console.log('SUCCESS_QUERY_ONE_TASK_INFO');
res.json(message: 'SUCCESS_QUERY_ONE_TASK_INFO', data: task)
)
)
http.service.ts the console.log() is returning the task id
getTaskInfo(task)
console.log('SINGLE_TASK_INFO_SERVICE_FILE:', task._id);
return this._http.get('task-info', task);
app.component.ts the console.log() is returning the entire task
singleTask(task: any)
const observable = this._httpService.getTaskInfo(task);
observable.subscribe(data =>
console.log('SINGLE_TASK: ', data);
);
----The app.component.html----
<div>
<h1>Tasks</h1>
<ul *ngIf="allTasksList" class="all-tasks-ul">
<li *ngFor="let task of allTasksList.tasks"> task.title
<div class="edit-task-btn">
<button (click)="singleTask(task)">Info</button>
</div>
<div class="info-task-btn">
<button (click)="changeTask(task)">Edit</button>
</div>
<div class="delete-task-btn">
<button (click)="deleteOneTask(task._id)">Delete</button>
</div>
</li>
<div *ngIf="editTask" class="editing-task-div">
<h1>Editing editTask.title </h1>
<form (submit)="updateTask(editTask)">
<label>
Update Task:
<input type="text" name="editTask.title" [(ngModel)]="editTask.title" id="">
</label><br>
<label>
Update Task Description:
<input type="text" name="editTask.description" [(ngModel)]="editTask.description" id="">
</label><br>
<input type="submit" value="Update Task">
</form>
</div>
</ul>
</div>
SERVER_:未定义
这是 conole 正在打印的内容,然后是错误查询的错误。就像我说的,在 POSTMAN 中,同样的 get 检索数据。
【问题讨论】:
【参考方案1】:首先,您不会将正文发送到 GET 请求,永远不要只发送参数或查询参数,如下所示:
router.get('/getPost/:id', (req, res, next) =>
let id = req.params.id;
// Make your Query Here
)
在你的 Angular 端使用这个
let id = task.id;
this._httpService.get(`task-info/$id`);
【讨论】:
谢谢!那完全奏效了!我需要从 URL 中获取它。我相信它也适用于删除。以上是关于不将数据从服务方法传递到猫鼬获取路由以使用 Angular IO 查询数据的主要内容,如果未能解决你的问题,请参考以下文章
将 created_at 和 updated_at 字段添加到猫鼬模式