ReferenceError: тело не определено - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь создать функцию editpost для моего приложения, но постоянно получаю сообщение об ошибке «тело не определено»

ReferenceError: тело не определено в EditPost (C: \ server\ controllers \ posts.js: 161: 36)

Я включил контроллер, компонент и HTML.

для контроллера

editPost(req, res) {
    console.log(body);
    const Schema = Joi.object().keys({
      post: Joi.string().required(),
      id: Joi.string().optional()
    });
    const { error } = Joi.validate(body, Schema);
    if (error && error.details) {
      return res.status(httpStatus.BAD_REQUEST).json({
        msg: error.details
      });
    }
    const body = {
      post: req.body.post,
      created: new Date()
    };

    Post.findOneAndUpdate({ _id: req.body.id }, body, { new: true })
      .then(post => {
        res
          .status(httpStatus.OK)
          .json({ message: "Post updated successfully", post });
      })
      .catch(err => {
        return res.status(httpStatus.INTERNAL_SERVER_ERROR).json({
          message: err
        });
      });
  }

компонент post

SubmitEditedPost() {
    console.log(this.editForm.value);
    const body = {
      id: this.postValue._id,
      post: this.editForm.value.editedPost
    }
    this.postService.editPost(body).subscribe(data => {
      console.log(data)
      this.socket.emit('refresh', {})
    }, err => console.log(err))
    M.Modal.getInstance(this.modalElement).close();
    this.editForm.reset();
  }

И HTML

        <div class="container">
      <div id="modal" class="modal">
        <div class="modal-content">
          <h4>
              Edit Post
              <button class="button"(click)="CloseModal()"> Close </button>
          </h4>
          <p *ngIf="postValue"> {{postValue.post}} </p>
          <form [formGroup]="editForm" novalidate>
            <textarea formControlName="editedPost" class="materialize-textarea"></textarea>
            <div class="modal-footer">
                <button class="secondary-content deleteBtn btn">Delete</button>&nbsp;
                <button class="btn" (click)="SubmitEditPost()" >Save</button>
              </div>
          </form>
        </div>

      </div>
    </div>

Ответы [ 2 ]

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

Определить тело в верхней части editPost функции

editPost(req, res) {
    const body = {
      post: req.body.post,
      created: new Date()
    };
    console.log(body);
    const Schema = Joi.object().keys({
      post: Joi.string().required(),
      id: Joi.string().optional()
    });
    const { error } = Joi.validate(body, Schema);
    if (error && error.details) {
      return res.status(httpStatus.BAD_REQUEST).json({
        msg: error.details
      });
    }


    Post.findOneAndUpdate({ _id: req.body.id }, body, { new: true })
      .then(post => {
        res
          .status(httpStatus.OK)
          .json({ message: "Post updated successfully", post });
      })
      .catch(err => {
        return res.status(httpStatus.INTERNAL_SERVER_ERROR).json({
          message: err
        });
      });
  }
0 голосов
/ 03 мая 2019

Удалите console.log(body); в вашем коде.Поскольку он использовался до определения переменной

или

, определите переменную body перед ее использованием, поэтому вам следует переместить приведенный ниже код сверху.

const body = {
      post: req.body.post,
      created: new Date()
    };
...