Javascript Mongodb只获取ID:posted,而不是表单中的数据
我想通过POST方法用表单将数据发送到我的MongoDB 似乎一切正常。 正如预期的那样,当我单击submit按钮时,会向mongoDB发送帖子,但是帖子不包含我在表单中输入的数据。发布到DB的唯一内容是IDJavascript 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
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,以检查数据是否存在