不将数据从服务方法传递到猫鼬获取使用Angular IO查询数据的路由

时间:2019-05-27 02:43:58

标签: node.js angular express mongoose body-parser

我正在将数据从模板获取到组件层,然后将其传递到服务文件。我在两个级别的console.log()中都看到了它。当我在要在服务器中命中的路由旁边的方法中传递变量时,它没有被传递,或者我没有正确地访问它(可能是这种情况),并且我已经尽力了。 >

当我在NodeJS服务器中console.log()使用express,body-parser和mongoose )时,它返回{}req.body,如果我未定义,则返回undefined尝试在最后添加密钥。仅凭请求,我得到了巨大的响应,但是解析所有我能真正看到的所有信息是方法键/值以及我试图通过服务文件方法访问的路由的键/值。

我已经尝试了所有可以想到的方法,并在邮递员中使用了该路线,并且效果很好。

  

我用console.log记录了req req.params和req.URL都没有成功。

其他文件(组件和服务)是console.logging数据,因此我知道它是从模板中的*ngFor传递过来的,该模板返回对所有'tasks的查询'存储在数据库中(键是标题,描述和默认设置false)。我真的不知道该怎么办。

昨天我在使用删除方法和findByIdAndDelete猫鼬方法时也遇到了同样的问题。 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 个答案:

答案 0 :(得分:0)

首先,您不要将正文发送到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}`);