平均スタックアプリケーションで作業していますが、サーバー上にいくつかのデータを保存する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;
保存する前にreq.body.controlTypeを印刷してください。要請して送るものを印刷していますか? –
req.bodyを印刷すると、すべてのフィールドが正しい値で印刷されます。[{controlType: 'text'、ラベル: 'name'、必須:false、プレースホルダ: '名'}] しかし、req.body.controlTypeを使って単一のフィールドを出力すると、コンソール上にfalseが表示されます。どうしてか分かりません? @PavanVora –