繁体   English   中英

如何使用 express node.js 将数据保存在 mongodb 中?

[英]How to save data in mongodb with express node.js?

当我尝试使用 Postman 向 mogoose 发出发布请求时遇到问题,我得到以下答案:

<head>
    <meta charset="utf-8">
    <title>Error</title>
</head>

<body>
    <pre>Cannot POST /</pre>
</body>

</html> 

我无法理解原因,我的 index.js 代码:

const express = require("express");
const mongoose = require("mongoose");
const cors = require('cors')
const bodyParser = require('body-parser')

mongoose.connect(
  process.env.MONGODB_URL || "mongodb://localhost/trading",
  {
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true,

  }
).then(item => {
  console.log('conectado com o banco')
}).catch((err)=>{
  console.log(err)
});

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}))

const candlesRoute = require("./routes/candles");
const home = require("./routes/home");

app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Methods", 'GET,PUT,POST,DELETE');

  app.use(cors());
  next();

})

app.use("/", home);
app.use("/candles", candlesRoute);

const PORT = 8080;
app.listen(PORT, () => {
  console.log("Servidor Conectado");
});

我的路线candles.js:

const express = require("express");
const router = express.Router();
const mongoose = require("mongoose");

require("../models/Candles");
const candlesTick = mongoose.model("candles");

router.post('/candles', async (req, res) => {
  try {
    const velas = req.body

    await new candlesTick(velas).save();
      console.log('successe')
  } catch (error) {
    console.log(error);
  }
});

module.exports = router;

最后是我的 model Candles.js:

const mongoose = require('mongoose')
//const Schema = mongoose.Schema

const Candles = new mongoose.Schema({
    titulo: {
        type: String, 
    },
    
})

mongoose.model("candles", Candles);

我在 Postman 中的要求如下

{
    "titulo": "DENT/ETH"
}

我已经tmbm直接发送数据,即使这样它也不起作用,我不明白这是为什么,请谁能帮忙谢谢

我认为 req.body 未解析,因为您已将 bodyparser extendedUrl 设置为false 尝试这个:

 app.use(bodyParser.urlencoded({extended: true}))

此外,您只需使用MyModel.create(myContent)创建 object,而不是使用 new Model() + save()。

您也应该发布您的终端日志,但 nvm :) 我可以通过查看您的代码来猜测问题:-

  1. 您的 mongodb 本地 URL 是错误的,没有提及端口。 它总是像mongodb://localhost:27017/trading本地服务器

  2. 我对此不太了解,但您没有在 Candles.js 中导出 model

app.use("/candles", candlesRoute); 将为该路由添加命名空间,并且路由器在发布请求中也有candles 最后,可用的路线将是POST {{host}}/candles/candles

candles

router.post('/candles', async (req, res) => {
  ...
})

或将 postman 中的 URL 作为{{host}}/candles/candles

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM