Как обновить с понедельника goose на Nodejs - PullRequest
0 голосов
/ 05 апреля 2020

Пожалуйста, мне нужна помощь. я пытаюсь обновить свой пост на Node и mon goose, но он не работает, я следовал документации на сайте mon goose и примерам на stackoverflow, но он все еще не работает. при обновлении он дает мне код состояния 302, а когда я console.log - результат обновления, он дает мне этот номер, который я не совсем понимаю { n: 1, nModified: 0, ok: 1 }

мой routes/posts.js

router.post('/edit/:id', (req, res) => {
  let post = {};
  post.title = req.body.title;
  post.description = req.body.description;
  post.from = req.body.from;
  let query = {_id: req.params.id}
  Post.updateOne(query, post , {new:true},  (err, post) => {
    console.log(post)
    if(err){
      console.log(err)
      res.redirect("back");
    }else {
      res.redirect("/posts");
    }
 });
});

my posts/edit.ejs

 <form action="/posts/edit/<%=post._id %>" method="POST" enctype="multipart/form-data">
    <%- include('_form_fields') %>
    <a href="/posts">Cacel</a>
    <button type="submit">Update</button>
</form>

my app.js

var postRouter = require('./routes/posts');
app.use('/posts', postRouter);

моя схема

 const postSchema = new mongoose.Schema({
title: {
     type: String,
     required: true
},
description: {
    type: String,
    required: true
},
from: {
    type: String,
    required: true
},
createdAt: { 
    type: Date, 
    required: true, 
    default: Date.now
},
postImage: {
    type: String,
    require: true
},
comments: [{ type: Schema.Types.ObjectId, ref: 'Comment' }]

})

и это результат на консоли

{ n: 1, nModified: 0, ok: 1 }

Я действительно не знаю, что я делаю здесь неправильно, я следовал примерам, которые я видел онлайн и документам.

1 Ответ

1 голос
/ 05 апреля 2020

@ chuckwuma да, синтаксис для updateOne правильный. но убедитесь, что req.body содержит указанные ключи и, во-вторых, все ключи, которые вы пытаетесь обновить, существуют в схеме mon goose и имеют то же имя, которое вы упомянули в post .__, и удалите объект опции {new: true} Если вы хотите получить только что обновленный результат, вы можете go. findOneAndUpdate () для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...