【问题标题】:MongoDB - Error with Postman - Data sending failsMongoDB - 邮递员出错 - 数据发送失败
【发布时间】: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 报错截图:

我数周以来一直试图解决这个问题,但无法解决。

提前感谢您!

【问题讨论】:

    标签: node.js mongodb mean-stack 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) 中返回什么?请求数据是否正确返回?
    猜你喜欢
    • 2022-01-23
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 2014-07-22
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多