отправить dataSchema в mongodb с помощью почтальона - PullRequest
0 голосов
/ 11 марта 2020

Я обновляю вопрос более подробной информацией: «Я довольно новичок в Express / mongodb, я пытаюсь отправить свою userSchema на mongoDb с помощью почтальона, но получаю эту ошибку:«

postman

postman это мой основной сценарий:

mongoose
  .connect(config.mongoURI, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => console.log("db connected"))
  .catch(err => console.log(err));

app.use(cors());
app.options("*", cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cookieParser());

app.post("/api/users/register", (req, res) => {
  const user = new User(req.body);
  user.save((err, userData) => {
    if (err) return res.json({ success: false, err });
  });
  return res.status(200);
});
app.listen(5000);

это userSchema:

const mongoose = require("mongoose");

const userSchema = mongoose.Schema({
  name: {
    type: String,
    maxlength: 50
  },
  email: {
    type: String,
    trim: true,
    unique: 1
  },
  password: {
    type: String,
    minlength: 5
  },
  lastname: {
    type: String,
    maxlength: 50
  },
  role: {
    type: Number,
    default: 0
  },
  token: {
    type: String
  },
  tokenExp: {
    type: Number
  }
});

const User = mongoose.model("User", userSchema);

module.exports = { User };

пожалуйста, что я делаю не так?

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Вы создаете свою функцию в методе POST, но в Postman вы используете метод GET. Пожалуйста, выберите метод POST и попробуйте отправить необработанные данные внутри тела в Postman.

Пожалуйста, используйте следующий код для разрешения body-parser JSON и Methods.

app.use(bodyParser.json({ type: 'application/*' }));
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', "*");
  res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Control-Allow-Credentials');
  res.header('Access-Control-Allow-Credentials', 'true');
  next();
});
1 голос
/ 11 марта 2020

Вы используете POST-запрос, но используете GET-запрос в почтальоне, поэтому лучше измените его на asyn c и ждите, потому что ответ с сервера может занять некоторое время, поэтому попробуйте это

app.post('/api/users/register', async (req, res) => {
const user = new User({

   //This comes from your schema 
   //I assumed you only have one schema named name
    name: req.body.name,

});
   try{
   const savedPost = await user.save();
   res.json(savedPost);
  } catch(err) {
   res.json({message: err})
  }
 });
...