最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

为什么我的回调无法正常工作?

运维笔记admin11浏览0评论

为什么我的回调无法正常工作?

为什么我的回调无法正常工作?

此方法在node server运行

const express = require("express");
const app = express();

const fs = require("fs");
const connectDb = require("./config/db");

const __init__ = (local = false) => {
  fs.writeFile(
    "./config/default.json",
    `{
        "mongoURI": ${
          local
            ? `"mongodb://127.0.0.1:27017/test"`
            : `"mongodb+srv://admin:<password>@abc-xxghh.mongodb/test?retryWrites=true&w=majority"`
        }
      }`,

    function(err) {
      if (err) {
        return console.log(err);
      }

      connectDb();
    }
  );
};

__init__(true);

问题是,如果原来是mongoURI: 127.0.0.1:27017,并且如果我是__init__(false),那么当Node应该连接到127.0.0.1:27017 uri时,它将尝试连接到+srv

如果再次运行__init__(false),它将连接到适当的链接。

同样,如果我随后运行__init__(true),则当它应连接到本地时它将连接到srv+,如果我再次运行__init__(true),则只有它将连接到本地。

我在这里做错了什么?我正在按照我的预期使用回调,不是吗?


编辑:

//config/db
// for mongoDB connection
const mongoose = require("mongoose");
// require the directory
const config = require("config");
// get all contents of JSON file
const db = config.get("mongoURI");

const connectDb = async () => {
  try {
    console.log("connecting to mongodb", db);
    await mongoose.connect(db, {
      useNewUrlParser: true,
      useCreateIndex: true,
      useFindAndModify: false,
      useUnifiedTopology: true
    });

    console.log("Mongo DB connected");
  } catch (err) {
    console.log("unable to connect to mongodb");
    console.log(err.message);
    //exit if failure
    process.exit(1);
  }
};

module.exports = connectDb;

我什至尝试执行以下操作:

.....
  console.log("Developing locally:", local);

  // require the directory
  const config = require("config");
  // get all contents of JSON file
  const db = config.get("mongoURI");
  connectDb(db);
.....

但是它仍然读取旧值

回答如下:

您的本地URL和srv + URL代码正确。我可以看到的问题是方法connectDb();]的位置

fs.writeFile("fir arg - URL", "second -content", third - error fun {});

在函数后的代码中,将connectDb()置于错误提示之后。之后应将其关闭。

发布评论

评论列表(0)

  1. 暂无评论