首页 文章

连接数据库时出错 - nodejs和mongodb

提问于
浏览
0

我是nodejs和mongodb的重要人物 . 尝试连接到数据库时遇到以下错误:

(node:10124)UnhandledPromiseRejectionWarning:MongoNetworkError:在Pool首次连接[MongoNetworkError:connect ECONNREFUSED 127.0.0.1:27017]时无法连接到服务器[127.0.0.1:27017] . (E:\ node js workspace \ URL-Shortner \ server \ node_modules \ mongodb-core \ lib \ topologies \ server.js:562:11)在Pool.emit(events.mit)的emitOne(events.js:116:13)处 . js:211:7)在Connection . (E:\ node js workspace \ URL-Shortner \ server \ node_modules \ mongodb-core \ lib \ connection \ pool.js:316:12)在emitTwo的Object.onceWrapper(events.js:317:30)处(事件 . js:126:13)在Socket的Connection.emit(events.js:214:7) . (E:\ node js workspace \ URL-Shortner \ server \ node_modules \ mongodb-core \ lib \ connection \ connection.js:245:50)在emitOne上的Object.onceWrapper(events.js:315:30)处(事件 . js:116:13)在Socket.emit(events.js:211:7)的emitErrorNT(internal / streams / destroy.js:64:8)at _combinedTickCallback(internal / process / next_tick.js:138:11)at at process._tickCallback(internal / process / next_tick.js:180:9)(node:10124)UnhandledPromiseRejectionWarning:未处理的承诺拒绝 . 这个错误源于在没有catch块的情况下抛出异步函数,或者拒绝未使用.catch()处理的promise . (拒绝ID:1)(节点:10124)[DEP0018]弃用警告:不推荐使用未处理的拒绝承诺 . 将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程 .

我正在尝试 Build 一个网址缩短器 . 这是代码 .

index.js-

const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const mongoURI = "mongodb://localhost/url-shortner";
const connectOptions={
keepAlive: true,
reconnectTries: Number.MAX_VALUE
};
mongoose.connect(mongoURI,connectOptions,(err,db)=>{
if(err) console.log('Error',err);
console.log('Connected to MongoDB');
});
const app = express();
require("./models/UrlShorten");
app.use(bodyParser.json());
require("./routes/urlshorten")(app);
const PORT = 7000;
//Start server on Port 7000
  app.listen(PORT, () => {
console.log(`Server started on port`, PORT);
});

urlshorten.js-

const mongoose = require("mongoose");
const validUrl = require("valid-url");
const UrlShorten = mongoose.model("UrlShorten");
const shortid = require("shortid");
const errorUrl='http://localhost/error';
module.exports = app => {
app.get("/api/item/:code", async (req, res) => {
const urlCode = req.params.code;
const item = await UrlShorten.findOne({ urlCode: urlCode });
if (item) {
  return res.redirect(item.originalUrl);
 } else {
   return res.redirect(errorUrl);
 }
});
 app.post("/api/item", async (req, res) => {
 const { originalUrl, shortBaseUrl } = req.body;
 if (validUrl.isUri(shortBaseUrl)) {
 } else {
   return res
     .status(401)
     .json(
       "Invalid Base Url"
     );
 }
 const urlCode = shortid.generate();
 const updatedAt = new Date();
 if (validUrl.isUri(originalUrl)) {
   try {
     const item = await UrlShorten.findOne({ originalUrl: originalUrl });
     if (item) {
       res.status(200).json(item);
     } else {
       shortUrl = shortBaseUrl + "/" + urlCode;
      // console.log("Shorturl: "+shortUrl);
        const item = new UrlShorten({
         originalUrl,
         shortUrl,
         urlCode,
         updatedAt
       });
       await item.save();
       res.status(200).json(item);
     }
    } catch (err) {
    res.status(401).json("Invalid User Id");
   }
  } else {
   return res
     .status(401)
     .json(
       "Invalid Original Url"
     );
 }
});
};

这是架构:

Schema({
originalUrl: String,
urlCode: String,
shortUrl: String,
createdAt: { type: Date, default: Date.now },
updatedAt: { type: Date, default: Date.now }

});

谢谢 .

1 回答

  • 0

    你还没有开始你的mongodb服务,

    使用命令启动它: sudo mongod 然后尝试启动服务器 .

相关问题