【发布时间】:2019-01-16 17:31:40
【问题描述】:
我正在使用以下用户控制器插入使用 Node Express 和 MongoDB 的用户。当我开始使用 Postman Body 表单数据插入值时,我得到以下输出错误消息“无效请求,无效的‘名称’参数。”这个错误说我想在Schema中插入name字段的值,但是我在Body form-data中输入了name字段及其值作为Key和value,那么为什么这不起作用呢?
userController.js
const express=require("express");
const router =express.Router();
const mongoose=require("mongoose");
const multer = require('multer');
var assert = require('assert');
const User = require('../models/user.model.js');
var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens
var bodyParser = require('body-parser');
var app = express(); // define our app using express
// Put these statements before you define any routes.
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
// POST
exports.create = ("/",(req, res, next) =>
{
var varName= req.body.name;
var varUname = req.body.username;
var varPass = req.body.password;
var varEmail = req.body.email;
if(!varName)
{
return res.status(400).send(
{
"error_message": "Invalid request, Invalid 'name' parameter.",
"status": "INVALID_REQUEST"
}
);
}
// Other Validations are go here...
const user = new User(
{
name: varName, //required
address: req.body.address,
logo: req.body.logo,
username: varUname, //required
password: varPass, //required
phone_number: req.body.phone_number,
email: varEmail, //required
token_key : token
});
// Save Programe in the database
user.save()
.then(data => {
res.send(
{
"error_message": [],
"results":"User created successfully",
"status": "Success",
"token": token
});
}).catch(err => {
res.status(500).send({
error_message: err.message || "Some error occurred while creating the Programe."
});
});
});
// GET all
exports.findAll = (req, res) =>
{
User.find()
.then(users => {
res.send(users);
}).catch(err => {
res.status(500).send({
error_message: err.message || "Some error occurred while retrieving programe."
});
});
};
已更新,请查看我添加的server.js 代码
var express = require("express");
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var session = require('express-session');
// Configuring the database
const dbConfig = require('./config/database.config.js');
var multer = require('multer');
mongoose.Promise = global.Promise;
// Connecting to the database
mongoose.connect(dbConfig.url)
.then(() => {
console.log("Successfully connected to the database");
}).catch(err => {
console.log('Could not connect to the database. Exiting now...');
process.exit();
});
app.use('/uploads', express.static('uploads'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Authorization"
);
if (req.method === "OPTIONS") {
res.header("Access-Control-Allow-Methods", "PUT, POST, PATCH, DELETE, GET");
return res.status(200).json({});
}
next();
});
// define a simple route
app.get('/', (req, res) => {
res.json({"message": "Welcome to Agenda APP created by ApptimusTECH."});
});
require('./app/routes/programe.routes.js')(app);
require('./app/routes/user.routes.js')(app);
require('./app/routes/agenda.routes.js')(app);
// listen for requests
app.listen(3000, () => {
console.log("Server is listening on port 3000");
});
【问题讨论】:
-
将邮递员中的原始类型选项更改为 JSON
-
为什么要使用原始选项和 JSON?我也将通过 React 使用前端。
-
这是因为您的应用正在使用 JSON 正文解析中间件
app.use(bodyParser.json()); -
如果我使用原始 JSON,我应该使用 react Front End 插入数据吗?
-
如何更改
app.use(bodyParser.json());以使用form-data插入数据?
标签: node.js mongodb api postman