const err = new MongooseError(message);

zvokhttg  于 2023-06-30  发布在  Go
关注(0)|答案(6)|浏览(219)

我试图创建一个项目,允许用户输入“电子邮件”,“用户名”和“密码”注册到该网站,当我试图输入一个用户使用“用户名”,电子邮件”和“密码”进入这个网站,我得到以下错误:

Backend server is running
not connected
C:\Users\odewo\chat-app\NODE-REST-API\node_modules\mongoose\lib\drivers\node-mongodb-native\collection.js:149
          const err = new MongooseError(message);
                      ^

MongooseError: Operation `users.insertOne()` buffering timed out after 10000ms
    at Timeout.<anonymous> (C:\Users\odewo\chat-app\NODE-REST-API\node_modules\mongoose\lib\drivers\node-mongodb-native\collection.js:149:23)
    at listOnTimeout (node:internal/timers:557:17)
    at processTimers (node:internal/timers:500:7)

下面是我的mongoose代码:

mongoose.connect(process.env.MONGO_URL, {
  userNewUrlPaser: true,
  useUnifiedTopology: true,
  useCreateIndex: true,
})
  .then(() => {
    console.log('Connected to MongoDB');
  })
  .catch((e) => {
    console.log('not connected');
  });

这是路由的auth.js代码:

const router = require('express').Router();
const User = require('../models/User');

//  REGISTER
router.get('/register', async (req, res) => {
  const user = await new User({
    username: 'samson',
    email: 'samson@gmail.com',
    password: '123456',
  });

  await user.save();
  res.send('ok');
});
module.exports = router;

我将非常感谢你的帮助

e3bfsja2

e3bfsja21#

Monogo Db Atlas ->网络访问-> IP访问列表-> IP地址更新为从任何地方访问我的作品。
原因:我的互联网提供商分配动态IP,每次我登录的IP地址的变化,这抛出错误。

l5tcr1uw

l5tcr1uw2#

检查您的MONGO_URL并确保您的密码或用户名未包含在< >标记中。我认为你的代码很好,但很明显有一些问题。我会检查.env文件以确保。

ne5o7dgx

ne5o7dgx3#

移除await无法解决问题。最好异步实现此函数。您必须登录到您的mongo帐户,并从网络访问部分添加您的IP地址。

0aydgbwb

0aydgbwb4#

你应该在新的User声明之前删除await,只在你等待promise的结果时使用await,就像在await user.save()中一样

20jt8wwn

20jt8wwn5#

改变你的网址将解决这个问题,我也面临过一次。把这个mongoose.connect('mongodb://127.0.0.1:27017');和你的其他代码保持不变。

vcirk6k6

vcirk6k66#

你可以解决这个问题,使用一个简单的密码为您的atlasDatabase的意思是避免使用任何特殊字符在您的密码,如“@”或“$”,如果你使用,那么他们必须是url编码,这就是为什么它是更好的,如果你避免特殊字符,它为我工作,我希望它也将为您工作。enter image description here

相关问题