Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongodb只获取ID:posted,而不是表单中的数据_Javascript_Node.js_Json_Mongodb - Fatal编程技术网

Javascript Mongodb只获取ID:posted,而不是表单中的数据

Javascript Mongodb只获取ID:posted,而不是表单中的数据,javascript,node.js,json,mongodb,Javascript,Node.js,Json,Mongodb,我想通过POST方法用表单将数据发送到我的MongoDB 似乎一切正常。 正如预期的那样,当我单击submit按钮时,会向mongoDB发送帖子,但是帖子不包含我在表单中输入的数据。发布到DB的唯一内容是ID id "5db45de0658c801a8813fa7f" __v 0 下面是我的控制器中POST方法的代码片段: let bodyParser = require('body-parser'); let mongoose = require('mongoose'); mongoos

我想通过POST方法用表单将数据发送到我的MongoDB

似乎一切正常。 正如预期的那样,当我单击submit按钮时,会向mongoDB发送帖子,但是帖子不包含我在表单中输入的数据。发布到DB的唯一内容是ID

id  "5db45de0658c801a8813fa7f"
__v 0
下面是我的控制器中POST方法的代码片段:

let bodyParser = require('body-parser');
let mongoose = require('mongoose');

mongoose.connect('?????????', {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true });

let Schema = mongoose.Schema;

//the proposed schema
let TaskSchema_Kid = new Schema({
  task: String
});

// creates the document "database in MongoDB"
let Task = mongoose.model('Task', TaskSchema_Kid);

let urlencodedParser = bodyParser.urlencoded({extended: false});

module.exports = function (app) {
  app.post('/todoParents' , urlencodedParser, function (req, res) {
    let newTask = Task(req.body).save(function (err, data) {
      if (err) throw err;
      res.json(data);
      console.log('something happened')
    })
  })

}
下面是task.js中的代码:


  let submitButton = document.getElementById('button');
  let textField = document.getElementById('input');

  submitButton.addEventListener('click' , addItem);

  function addItem() {

    let newTask = textField.value;
    let task = {
      item: newTask
    }
    console.log(task)

    fetch("/todoParents", {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(task)
    }).then((res) => res.json())
    .then((data) => console.log(data))
    .catch((err) => console.log(err))

  }

};
这是todoParents.ejs

<body>

    <div class="wrapper">

        <div class="assign">
          <form action="" method="post">
              <input id="input" name="input" type="text" placeholder="assign Task">
              <button id="button" type="submit">Burden the children</button>
            </form>
        </div>

        <div class="container">
          <h1>Time to burden the children</h1>

          <ul>
              <% for(var i=0; i < todos.length; i++) { %>
                <li><%= todos[i].item %> </li>
             <% } %>
          </ul>


        </div>
      </div>

      <script src="../public/assets/tasks.js"></script>

</body>

发送数据时,任务是具有字段项的对象

let task = {
  item: newTask
}
但您的模式希望任务作为字符串


还有一个问题可能是您正在字符串化body和TaskObject。保存需要对象。

根据您的架构,需要一个键为“task”的对象

让TaskSchema\u Kid=新模式{ 任务:字符串 }; 但是,在task.js中,您已经使用键“item”定义了对象

让任务={ 项目:新任务 } 因此,req.body有一个具有以下结构的对象

{ 项目:富 } 解决方案 在task.js中,将项更改为任务

让任务={ 任务:newTask }
恐怕这还不是解决方案。将项目更改为任务,但不起作用。关于stringify,我应该怎么做呢?只需在主体中传递对象,而不是在api端传递stringor do JSON.parse do console.log,以检查数据是否存在