DeprecationWarning 之后的“用户不允许执行操作”

Posted

技术标签:

【中文标题】DeprecationWarning 之后的“用户不允许执行操作”【英文标题】:"User is not allowed to do action" following a DeprecationWarning 【发布时间】:2020-01-11 06:50:43 【问题描述】:

在处理一些新的(非常简单的)服务器代码时,我连接并插入了 MongoDB URL 代码,以便在 MongoDB Atlas 上“部署”它。

但是,我收到以下警告:

(node:3396) DeprecationWarning: 当前 URL 字符串解析器是 已弃用,并将在未来的版本中删除。要使用新 解析器,将选项 useNewUrlParser: true 传递给 MongoClient.connect。

这不会阻止我的代码部署到服务器,并且仍然允许我使用本地测试工具 (Postman) 发送请求。但是,在发送我的请求后,我在 VS Code 中收到以下消息:

 MongoError: user is not allowed to do action [insert] on [agenda.contacts]
    at Connection.<anonymous> (C:\Users\mymachine\agenda\node_modules\mongodb-core\lib\connection\pool.js:443:61)
    at Connection.emit (events.js:198:13)
    at processMessage (C:\Users\mymachine\agenda\node_modules\mongodb-core\lib\connection\connection.js:364:10)
    at TLSSocket.<anonymous> (C:\Users\mymachine\agenda\node_modules\mongodb-core\lib\connection\connection.js:533:15)
    at TLSSocket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at TLSSocket.Readable.push (_stream_readable.js:224:10)
    at TLSWrap.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
  ok: 0,

我怀疑这可能是版本错误,但这超出了我的专业领域。

我的设置非常简单,只在 MongoDB 网站上连接了 Atlas 集群。

MongoDB 仍然提供我需要的所有分析,所以它似乎没有问题。

我已经尝试将mongoClient.connect 代码从useMongoClient: true 更改为useNewUrlParser: true,但它只会将警告消息代码从(node:3396) 更改为(node:1092)

mongoose.connect(
    '*inserted mongodb url code, copied from CONNECTION STRING ONLY");
    
        useNewUrlParser: true
    

由于我从未使用过 MongoDB,我相信我的问题出在那个软件上。

我只复制了 CONNECTION STRING 而不是完整的驱动程序示例(两者都提供了一个代码以插入到我在 VS Code 中的代码中。

【问题讨论】:

欢迎来到 Stack Overflow!这里有几个不同的问题,但需要注意的一点是,(node:1234) 中的数字只是表明代码的哪一行导致了错误或警告。如果编号发生变化,您也应该转到新的行号并在那里查找问题。 facepalm 感谢您的提醒。我只是不知道我的任何问题是什么。这绝对是一个注意小细节!谢谢! 【参考方案1】:

关于上面解决的 (node(1234)) 问题,它是关于更新版本的警告,例如调用useNewUrlParser: true而不是useMongoClient: true

至于“MongoError”,我没有硬编码我的密码,而是调用+ process.env.MONGO_ATLAS_PW +并将我的密码发送到文件./nodemon.json

更改两个错误后,代码运行顺利。但是,我必须找到一种新的方式来发送密码,而不是硬编码。

感谢所有帮助过的人。

【讨论】:

以上是关于DeprecationWarning 之后的“用户不允许执行操作”的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 警告:DeprecationWarning:当前的服务器发现和监控引擎已弃用?

如何确定地抑制 Python 中的 DeprecationWarning?

在将 appium 作为 DeprecationWarning 运行之前,我有一个警告。它是啥?

如何在 Python 中修复“<string> DeprecationWarning: invalid escape sequence”?

如何修复 PySide2 QPixmapCache.find() DeprecationWarning?

DeprecationWarning