ВАЖНОЕ РЕДАКТИРОВАНИЕ:
В моем коде нет ничего плохого, проблема связана с моим соединением, моя сеть на работе блокирует его. Я не знаю почему, я использовал свое телефонное соединениечтобы понять это. Я посмотрю на это.
Исходное сообщение:
Я пытаюсь создать API-интерфейс NodeJS, используя Express, Mongoose с базой данных MongoDB Atlas и мой уровень сJavascript, как начинающий / средний, если вам интересно.
Я следую этому уроку: https://youtu.be/vjf774RKrLc?t=2159 но он использует MLab вместо MongoAtlas, и я попытался адаптировать свой код к нему.
Так что отрывок, который я разместил в видео, - это то, где у меня проблемы. Его пост работает, но мой просто ничего не делает, и я получаю эту ошибку от PostMan "Не удалось получить ответ"
Так что, когда я пытаюсь сделать свой пост, мой article.save()
не работает, и я не знаю, гдеЯ делаю ошибку. Так что есть мои разные файлы, если вы можете посмотреть его, пожалуйста, пока не так уж много кода, поэтому я публикую весь файл.
app.js:
const express = require('express');
const app = express();
const mongoose = require('mongoose');
require('dotenv/config');
//simplify us the use of json objects and encoded urls with special characters
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
//Import routes
const articlesRoute = require('./routes/articles.js');
//url redirections
// link to .../articles will be dealt with articlesRoute
app.use('/articles', articlesRoute);
//Home page of the API
app.get('/', (req, res) => {
res.send('We are at home!')
});
//database connection
mongoose.connect(
process.env.DB_CONNECTION,
{ dbName: 'test', useNewUrlParser: true, useUnifiedTopology: true },
() => {
console.log("Connected to db");
}
);
//listening port
app.listen(3000);
article.js:
const express = require('express');
const router = express.Router();
const Article = require('../models/Article');
router.get('/', (req, res) => {
res.send('we are on articles');
});
router.post('/', async (req, res) => {
const article = new Article(req.body);
try {
console.log("try");
console.log(article);
const savedArticle = await article.save();
console.log(savedArticle);
res.json(savedArticle);
} catch (err) {
console.log("error :" + err)
res.json({ message: err })
};
});
module.exports = router;
Article.js:
const mongoose = require('mongoose');
const ArticleSchema = mongoose.Schema({
reference: {
type: String,
required: true
},
categorie: {
type: String,
required: true
},
description: {
type: String,
required: false
},
garantie: {
type: Number,
required: true
}
});
module.exports = mongoose.model('Articles', ArticleSchema);
Мой объект 'article' содержит данные, но ничего не происходит, PostMan просто загружается в течение нескольких минут, а затем я получаюсообщение, опубликованное ранее.
Я также пытался исправить ошибки, предложенные PostMan, но ничего не изменилось.
Спасибо за ответы на вопросы.
РЕДАКТИРОВАТЬ:
Благодаря @SuleymanSah я вижу, что у меня возникает ошибка при подключении к моей базе данных:
{ Error: connect ECONNREFUSED there.Is.An.Ip.There at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1106:14) name: 'MongoNetworkError', errorLabels: [ 'TransientTransactionError' ], [Symbol(mongoErrorContextSymbol)]: {} }
Но я не понимаю, почему, если у кого-то есть решения thx