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 抛出“网络请求失败”

MongoDb:在数组中推送文档时出错

url解码和发布数据后出错

mongodb失败:连接到数据库服务器时出错:没有可访问的服务器

邮递员“评估预请求脚本时出错”,但预请求脚本为空

GET 请求在邮递员中有效,但在 Axios 中失败