【问题标题】:Make post request to Mongodb Atlas using Nodejs使用 Nodejs 向 Mongodb Atlas 发出 post 请求
【发布时间】:2021-03-27 14:15:23
【问题描述】:

我熟悉 MongodB 进行 CRUD 操作。在这里,我试图在 mongodB atlas 上发出简单的发布请求,但我想知道我在哪里为连接和向 MongodB atlas 发布数据做错了。

模型.js

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

let quizSchema = new Schema({
  title: {
    type: String,
  },
  description: {
    type: Number,
  },

  question: {
    type: String,
  },
});

const Quiz = mongoose.model("Quiz", quizSchema);
module.exports = Quiz;

index.js

我正在尝试创建数据库集合名称“QuizDatabase”并将数据插入其中。

var express = require("express");
var bodyParser = require("body-parser");
const Quiz = require("./views/model/model");

var Request = require("request");
var app = express();
app.use(bodyParser.json());


const MongoClient = require("mongodb").MongoClient;
const uri =
  "mongodb+srv://username:password@cluster0.iom1t.mongodb.net/QuizDatabase?retryWrites=true&w=majority";
const client = new MongoClient(uri, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});
mongoose.connect(uri);


var server = app.listen(process.env.PORT || 8080, function () {
  var port = server.address().port;
  console.log("App now running on port", port);
});

app.post("/new/", function (req, res) {
  Quiz.collection("QuizDatabase").insertMany(req.body, function (err, doc) {
    if (err) {
      handleError(res, err.message, "Failed to create new quiz.");
    } else {
      res.status(201).send(JSON.stringify(body));
    }
  });
});
  function handleError(res, reason, message, code) {
  console.log("ERROR: " + reason);
  res.status(code || 500).json({ error: message });
}

【问题讨论】:

  • 您遇到的错误是什么?
  • 它说应用程序错误。我不确定我是否以正确的方式进行发布请求。

标签: node.js mongodb mongoose mongodb-atlas


【解决方案1】:

如果您已经在使用 mongoose,则不必使用 mongo 客户端。 在 index.js 文件中只需导入模型

const Quiz = require("./model");

而且你在写mongoose.connect(uri);的时候已经在用mongoose连接db了,不用再用client.connect()了。

要插入的查询 -

Quiz.insertMany(req.body);

您的索引文件应如下所示 -

const Quiz = require("./views/model/model");

var Request = require("request");
var app = express();
app.use(bodyParser.json());


const uri =
"mongodb+srv://username:password@cluster0.iom1t.mongodb.net/QuizDatabase?retryWrites=true&w=majority";

mongoose.connect(uri);


var server = app.listen(process.env.PORT || 8080, function () {
  var port = server.address().port;
  console.log("App now running on port", port);
});

app.post("/new/", function (req, res) {
  Quiz.insertMany(req.body, function (err, doc) {
    if (err) {
      handleError(res, err.message, "Failed to create new quiz.");
    } else {
      res.status(201).send(JSON.stringify(body));
    }
  });
});
  function handleError(res, reason, message, code) {
  console.log("ERROR: " + reason);
  res.status(code || 500).json({ error: message });
}

【讨论】:

  • 我已经根据你的建议更新了代码是你说的那样吗?我仍然收到错误,请检查更新代码。
  • 我已经用索引文件的代码更新了答案。请尝试运行它,
猜你喜欢
  • 2018-08-19
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-21
  • 2017-04-01
  • 2022-08-16
  • 1970-01-01
相关资源
最近更新 更多