(MEAN STACK)后端在我提交表单时将objectId和__v:0保存在mongodb中
Posted
技术标签:
【中文标题】(MEAN STACK)后端在我提交表单时将objectId和__v:0保存在mongodb中【英文标题】:(MEAN STACK) backend is saving objectId and __v : 0 in mongodb when i submit a form 【发布时间】:2022-01-05 17:58:29 【问题描述】:我正在使用 MEAN STACK 开发一个小型 CRUD 应用程序:
我有一个表格可以让我在 mongodb 中保存一本书的信息 当我提交时,我发现我有 ObjectID 和 __v : 0 保存在数据库中,而不是书的详细信息!这是我的代码:后端:
booksRoute.route('/post').post((req,res,next)=>
var x =
name : req.params.name,
genre : req.params.genre,
author : req.params.author,
rating : req.params.rating,
price : req.params.price
console.log(x) ;
BookModel(x).save((err,x)=>
if (err)console.log(err);
else res.send(x) ;
) ;
)
猫鼬模型
const mongoose = require('mongoose') ;
const Schema = mongoose.Schema ;
let books = new Schema(
name:
type:String
,
genre:
type:String
,
author:
type:String
,
rating:
type:Number
,
price:
type:Number
,
collection: 'booklist'
)
module.exports = mongoose.model('books',books) ;
前端
<ul>
<form #f="ngForm" (ngSubmit)="onSubmit(f)">
<li>
<label>book's name *</label>
<input name="name" type="text" ngModel>
</li>
<li>
<label>book's genre *</label>
<input name="genre" type="text" ngModel>
</li>
<li>
<label>book's author *</label>
<input name="author" type="text" ngModel>
</li>
<li>
<label>rating *</label>
<input name="rating" type="number" [max]="10" min="0" ngModel>
</li>
<li>
<label>price *</label>
<input name="price" type="number" ngModel>
<input class="btn btn-primary" type="submit"/>
</li>
</form>
</ul>
触发后端保存文档的函数
onSubmit(f)
//console.log(f.value) ;
this.apiService.postBook(f.value).subscribe( res => console.log('the back response:',res)) ;
服务
//post book
postBook(data)
console.log(data) ;
return this.http.post(this.backendUrl+'/post',data) ;
【问题讨论】:
【参考方案1】:我认为你的问题是你试图从 req.params
而不是 req.body
获取值
【讨论】:
hhh 我发誓我做到了,但不知何故,当你向我提出这个建议时,我又做了一次,它奏效了!谢谢以上是关于(MEAN STACK)后端在我提交表单时将objectId和__v:0保存在mongodb中的主要内容,如果未能解决你的问题,请参考以下文章
如何在表单提交时将 HTML 标签值传递给 PageModel