Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我应该如何将本地mongoose db连接并移动到mongodb cloud atlas?_Node.js_Mongodb_Express_Mongoose_Configure - Fatal编程技术网

Node.js 我应该如何将本地mongoose db连接并移动到mongodb cloud atlas?

Node.js 我应该如何将本地mongoose db连接并移动到mongodb cloud atlas?,node.js,mongodb,express,mongoose,configure,Node.js,Mongodb,Express,Mongoose,Configure,启动服务器时,出现如下错误: Error in DB connection : Error: queryTxt ETIMEOUT yky-api-ajgvf.mongodb.net 为了解决这个问题,我多次尝试正常工作。我甚至还不能在heroku上正确部署我的项目。我非常喜欢nodejs,但现在我只想暂时放弃不断学习nodejs 如果可能的话,有人帮我解决问题。我是学习Node.Js的人。大约有四五个月了。在我决定leran PHP之前,但现在我仍在尝试学习nodejs 我是个新手。:)

启动服务器时,出现如下错误:


Error in DB connection : Error: queryTxt ETIMEOUT yky-api-ajgvf.mongodb.net  
为了解决这个问题,我多次尝试正常工作。我甚至还不能在heroku上正确部署我的项目。我非常喜欢nodejs,但现在我只想暂时放弃不断学习nodejs

如果可能的话,有人帮我解决问题。我是学习Node.Js的人。大约有四五个月了。在我决定leran PHP之前,但现在我仍在尝试学习nodejs

我是个新手。:)

这是我的小项目中的配置数据库代码

const mongoose = require('mongoose')
const log = console.log

mongoose.connect('mongodb+srv://chanlay:chanlay123@yky-api-ajgvf.mongodb.net/yky-blog-api?retryWrites=true&w=majority', {
    useNewUrlParser: true
}, (err) => { 
    if (!err) {
        log('MongoDB Connection Succeeded.')
    } else {
        log('Error in DB connection : ' + err)
    }
});

require('../models/posts')
mongoose.connect()

在进一步演示之前,首先,您的这一块是错误的:

if (!err) {
        log('MongoDB Connection Succeeded.')
    } 
错误处理不会以这种方式工作,这种情况永远不会发生,因为当没有错误时,就没有理由调用检查这种情况的错误回调函数

而是使用。然后()阻塞,因为成功的连接会返回一个承诺:

mongoose.connect(uri, options).then(
  () => { console.log('MongoDB Connection Succeeded.') },
  err => { console.log(err) }
); 

// OR use .catch() after .then()

mongoose.connect(uri, options).then(() => console.log('MongoDB Connection Succeeded.')).catch( err => console.log(err))


您的答案:
socketTimeoutMS
设置为60000或90000。
如果仍然不起作用,请将
connectTimeoutMS=90000
重新连接=1000
添加到
选项中


声明一个名为
options
(名称是任意的,但最好遵循约定)的新变量,然后将
useNewUrlParser:true
也放在那里():

提示:您还可以在连接字符串中指定驱动程序选项作为URI()的查询字符串部分的参数:

{main url}?socketTimeoutMS=90000
,即:

const uri = mongodb+srv://chanlay:chanlay123@yky-api-ajgvf.mongodb.net/yky-blog-api?retryWrites=true&w=majority?socketTimeoutMS=90000
但是要坚持使用
选项
变量,因为它更干净、可读性更强、更易于维护(否则您会将所有内容都放在一个字符串中,这会使您更难读取和调试)

请在我的回答中留下评论,作为反馈或报告持续性错误,让我知道。

mongoose.connect()
可能是这样的():

在进一步演示之前,首先,您的这一块是错误的:

if (!err) {
        log('MongoDB Connection Succeeded.')
    } 
错误处理不会以这种方式工作,这种情况永远不会发生,因为当没有错误时,就没有理由调用检查这种情况的错误回调函数

而是使用。然后()阻塞,因为成功的连接会返回一个承诺:

mongoose.connect(uri, options).then(
  () => { console.log('MongoDB Connection Succeeded.') },
  err => { console.log(err) }
); 

// OR use .catch() after .then()

mongoose.connect(uri, options).then(() => console.log('MongoDB Connection Succeeded.')).catch( err => console.log(err))


您的答案:
socketTimeoutMS
设置为60000或90000。
如果仍然不起作用,请将
connectTimeoutMS=90000
重新连接=1000
添加到
选项中


声明一个名为
options
(名称是任意的,但最好遵循约定)的新变量,然后将
useNewUrlParser:true
也放在那里():

提示:您还可以在连接字符串中指定驱动程序选项作为URI()的查询字符串部分的参数:

{main url}?socketTimeoutMS=90000
,即:

const uri = mongodb+srv://chanlay:chanlay123@yky-api-ajgvf.mongodb.net/yky-blog-api?retryWrites=true&w=majority?socketTimeoutMS=90000
但是要坚持使用
选项
变量,因为它更干净、可读性更强、更易于维护(否则您会将所有内容都放在一个字符串中,这会使您更难读取和调试)


请在我的回答中留下评论,作为反馈或报告持续性错误,让我知道。

是的,我的兄弟。我会试试你的方法。解决这个问题后,我会立即回复您。@ChanMyaeMaung将
connectTimeoutMS=90000
reconnectTries=1000
添加到
选项中。你用的是什么版本的猫鼬?我哥哥已经用过了。但是,为了部署Heroku,我与Mongolab建立了联系。我的猫鼬版本是5.6.1是的,我的兄弟。我会试试你的方法。解决这个问题后,我会立即回复您。@ChanMyaeMaung将
connectTimeoutMS=90000
reconnectTries=1000
添加到
选项中。你用的是什么版本的猫鼬?我哥哥已经用过了。但是,为了部署Heroku,我与Mongolab建立了联系。我的猫鼬版本是5.6.1