MongoDB - 邮递员出错 - 数据发送失败
Posted
技术标签:
【中文标题】MongoDB - 邮递员出错 - 数据发送失败【英文标题】:MongoDB - Error with Postman - Data sending fails 【发布时间】:2018-05-30 20:04:39 【问题描述】:我使用 Mean Stack 构建了一个项目。我创建了一个报告表单,可以在其中插入数据。
当我从表单插入数据时,数据被插入到集合中。
但是当我使用 Postman 插入数据时,数据插入失败。
以下是代码段:
1.前端表单-report.component.html
<form (ngSubmit)="savereportdata()" novalidate>
<ba-card>
<div class="form-group">
<label for="middleItemId">Item ID</label>
<input type="text" class="form-control" placeholder="Enter Item ID" [(ngModel)]="itemId" name="itemId">
</div>
<div class="form-group">
<label for="middleItemName">Item Name</label>
<input type="text" class="form-control" placeholder="Enter Item Name" [(ngModel)]="itemName" name="itemName">
</div>
<div class="form-group">
<label for="warrentyUntil">Warrenty Until</label>
<input type="date" readonly="" class="form-control">
</div>
<div class="form-group">
<label for="reportDescription">Description</label>
<textarea class="form-control" rows="3" [(ngModel)]="reportDescription" name="reportDescription"></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</ba-card>
</form>
2.report.component.ts
import NgModule,Component,Pipe,OnInit from '@angular/core';
import ReportItemService from '../../../services/report-item.service'
@Component(
selector: 'app-report',
templateUrl: './report.component.html'
)
export class ReportComponent implements OnInit
itemId:Number;
itemName:String;
reportDescription:String;
constructor(public reportservice:ReportItemService)
ngOnInit()
savereportdata()
const reportitem =
itemId:this.itemId,
itemName:this.itemName,
reportDescription:this.reportDescription
;
this.reportservice.reportitemdata(reportitem).subscribe(res=>
console.log(res);
);
3.report-item.service.ts
import Injectable from '@angular/core';
import Http,Headers from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class ReportItemService
reportitem:any;
constructor(private http:Http)
reportitemdata(reportitem)
let headers=new Headers();
headers.append('Content-Type','application/json');
return this.http.post("http://localhost:3000/reportItem",reportitem,headers:headers).map(res=>res.json());
4.后端模型-report.js
const mongoose = require('mongoose');
const schema = mongoose.Schema;
const reportSchema = new schema(
itemId: type: Number, required: true ,
itemName: type: String ,
reportDescription: type: String ,
date: type: Date
);
module.exports = mongoose.model("ReportItem", reportSchema);
module.exports.saveReportItem = function(newreport, callback)
console.log(newreport);
newreport.save(callback);
;
5.router -reportItem.js
const express = require('express');
const router = express.Router();
const config = require('../config/database');
const ReportItem = require('../models/request-report/report');
router.post("", function(req, res)
const newreport = new ReportItem(
itemId: req.body.itemId,
itemName: req.body.itemName,
reportDescription: req.body.reportDescription,
date: new Date
);
ReportItem.saveReportItem(newreport, function(err, report)
if (err)
res.json( state: false, msg: "data not inserted" );
if (report)
res.json( state: true, msg: "data inserted" );
);
);
module.exports = router;
从表单插入数据时的结果截图:
Postman 报错截图:
我数周以来一直试图解决这个问题,但无法解决。
提前感谢您!
【问题讨论】:
【参考方案1】:您可以尝试在 js 代码中使用 bodyParser 模块从请求中获取数据。我过去曾遇到过这个问题。
【讨论】:
我在 app.js 中使用了 body parser 模块。错误如下,现在需要ValidationError: ReportItem validation failed: itemId: Path
itemId`。在 MongooseError.ValidationError.inspect (D:\inventory_api\node_modules\mongoose\lib\error\validation.js:57:23`
您是否尝试过通过 Postman 将其作为 JSON 而不是以表单形式发送?使用raw
选项和application/json
作为类型。 itemId: 1, itemName: "A name"
是的。状态仍然失败。
抱歉,我不确定我还有什么可以建议的。
console.log(newreport) 中返回什么?请求数据是否正确返回?以上是关于MongoDB - 邮递员出错 - 数据发送失败的主要内容,如果未能解决你的问题,请参考以下文章
React Native / Expo:Fetch 抛出“网络请求失败”