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