2017-11-15 5 views
-1

平均スタックアプリケーションで作業していますが、サーバー上にいくつかのデータを保存するExpressJsバックエンドのポストルートを定義しましたが、私はすべてのフィールドを提供しました。ExpressJSのポストルートを使用してデータを送信中にMongooseの検証エラーが発生しました

message:"Path `controlType` is required." 
name:"ValidatorError" 
path:"controlType" 
properties:{type: "required", message: "Path `{PATH}` is required.", path: "controlType"} 
__proto__ 
: 
Object 

私はreq.bodyを印刷し、それが彼らの正しい値を持つすべてのフィールドを印刷した場合は、コンソール出力を参照してください。 [{controlType: 'テキスト'、ラベル : '名前' は、 が必要:偽、 プレースホルダ:「最初の名前」}]

しかし、私はreq.body.controlTypeを使用して単一のフィールドを印刷するときは、コンソール上の偽出力します。どうしてか分かりません? そのマングーススキーマ:

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema;  

var formSchema = new Schema({  
    controlType: {type: String, required: true}, 
    label: {type: String, required: true}, 
    required: {type: Boolean}, 
    placeholder: {type: String}, 
    options: [String], //to store options for select or radio input 
} , {collection: 'inputForm'}); 



module.exports = mongoose.model('Form', formSchema); 

その私のポストルート:

const express = require('express'); 
const router = express.Router(); 
var Form = require('../../models/form'); 

/* GET api listing. */ 
router.get('/', (req, res) => { 
    res.send('api works'); 
}); 

router.post('/userform', function (req, res, next) { 
    console.log('in form api 0528'); 
    var keyName1=req.body; 
    console.log(keyName1); 

    var form = new Form({ 
     controlType: req.body.controlType, 
     label: req.body.label, 
     required:req.body.required ,   
     placeholder: req.body.placeholder, 
     options: req.body.options 
    }); 
    form.save(function(err, result) { 
     if (err) { 
      return res.status(500).json({ 
       title: 'An error occurred in form api 0528', 
       error: err 
      }); 
     } 
     res.status(201).json({ 
      message: 'Form created', 
      obj: result 
     }); 
    }); 
}); 

module.exports = router; 
+0

保存する前にreq.body.controlTypeを印刷してください。要請して送るものを印刷していますか? –

+0

req.bodyを印刷すると、すべてのフィールドが正しい値で印刷されます。[{controlType: 'text'、ラベル: 'name'、必須:false、プレースホルダ: '名'}] しかし、req.body.controlTypeを使って単一のフィールドを出力すると、コンソール上にfalseが表示されます。どうしてか分かりません? @PavanVora –

答えて

1

あなたreq.bodyが戻って配列されたように見えます。 req.body [0] .contentTypeのようなものを試してみてください。私は確信していませんが、試してみることができます。それがあなたの問題を解決したかどうか教えてください。

+0

はい、それは問題を解決しました、ありがとう –

関連する問題