Не передавая данные из сервисного метода в mongoose, получают маршрут для запроса данных с помощью Angular IO - PullRequest
1 голос
/ 27 мая 2019

Я получаю данные из шаблона на слой компонента, а затем передаю их в сервисный файл.Я вижу это в console.log() на обоих уровнях.Когда я передаю переменную в методе рядом с маршрутом, который я хочу найти на сервере, он не передается, или я не обращаюсь к нему правильно (возможно, так), и я сгибал его всеми способами, которые я знаю.

Когда я console.log() на сервере NodeJS ( с использованием express, body-parser и mongoose ), он возвращает {} с req.body и не определено, если я пытаюсь добавить ключ наконец.С помощью только req я получаю ОГРОМНЫЙ ответ, но анализируя всю информацию, все, что я действительно могу видеть, это ключ / значение метода и ключ / значение маршрута, к которому я пытаюсь получить доступ с помощью моего метода служебного файла.

Я перепробовал все, что мог, я использовал маршрут в почтальоне, и он работал нормально.

Я console.loged req req.params и req.URL безуспешно.

Другие файлы (компонент и служба) console.logging данные, поэтому язнаю, что он передается из *ngFor в шаблоне, который возвращает запрос ко всем 'tasks', хранящимся в базе данных (ключи - это title, description и значение по умолчанию 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_: undefined

это то, что печатает conole, затем ошибка отплохой запрос.Как я уже сказал, в POSTMAN тот же самый get получает данные.

1 Ответ

0 голосов
/ 27 мая 2019

Во-первых, вы не отправляете тело в GET Request, никогда не отправляете это, просто отправляете параметры или параметры запроса следующим образом:

router.get('/getPost/:id', (req, res, next) => {
    let id = req.params.id;
    // Make your Query Here
})

В вашей угловой стороне используйте это

let id = task.id;
this._httpService.get(`task-info/${id}`);
...