不将数据从服务方法传递到猫鼬获取路由以使用 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 字段添加到猫鼬模式

将 created_at 和 updated_at 字段添加到猫鼬模式

如何将json对象数组保存到猫鼬?

如何将json对象数组保存到猫鼬?

将订单集合中的订单总和添加到猫鼬中的用户集合