Tôi đang sử dụng Loopback cho máy chủ của tôi với các thiết lập sau:Loopback MongoError: không được uỷ quyền cho truy vấn trên heroku_xxxx.role
"loopback": "^2.36.0",
"loopback-boot": "^2.23.0",
"loopback-component-explorer": "^2.4.0",
"loopback-component-storage": "^1.9.1",
"loopback-connector-mongodb": "^1.17.0",
"loopback-datasource-juggler": "^2.53.0",
Nó kết nối với một MongoDB đó là trên mlab.com
truy vấn chính của tôi bao gồm một mô hình và phụ thuộc của nó, ví dụ:
GET /api/course/1234
PARAMS filter = {
include: [
{relation:'students'},
{relation:'documents'},
{relation:'modules'}
]
}
99,9% thời gian, nó hoạt động hoàn hảo. Nhưng khi tôi bắt đầu có nhiều hoạt động hơn trên nền tảng, tôi bắt đầu nhận được lỗi này trước khi máy chủ bắt đầu gặp sự cố. Dưới đây là các lỗi:
MongoError: not authorized for query on db.student
at Function.MongoError.create (/app/node_modules/mongodb-core/lib/error.js:31:11)
at queryCallback (/app/node_modules/mongodb-core/lib/cursor.js:182:34)
at /app/node_modules/continuation-local-storage/context.js:76:17
at bound (domain.js:287:14)
at runBound (domain.js:300:12)
at Callbacks.emit (/app/node_modules/mongodb-core/lib/topologies/server.js:119:3)
at null.messageHandler (/app/node_modules/mongodb-core/lib/topologies/server.js:397:23)
at Socket.<anonymous> (/app/node_modules/mongodb-core/lib/connection/connection.js:302:22)
Đôi khi trên db.students
, đôi khi nó là trên db.documents
... dường như ngẫu nhiên và tôi không có ý tưởng làm thế nào để sửa chữa nó.
Để kết nối với DB, tôi sử dụng URI được cung cấp bởi mlab. Hình như thế này:
mongodb://<dbuser>:<dbpassword>@<dbpath>/<dbname>
Có và không có ?&authMode=scram-sha1&rm.tcpNoDelay=true
, nhưng vẫn gặp lỗi.
Bất kỳ ý tưởng nào đang xảy ra và cách sửa lỗi này?
__ Chỉnh sửa: Tôi đã thử một vài phiên bản khác nhau không có may mắn. Mới nhất là:
"loopback": "^2.22.0",
"loopback-boot": "^2.6.5",
"loopback-component-explorer": "^2.4.0",
"loopback-component-storage": "^1.9.1",
"loopback-connector-mongodb": "^1.17.0",
"loopback-datasource-juggler": "^2.39.0",
__ Edit: Tôi tìm thấy bài này trên Github: https://github.com/strongloop/loopback-connector-mongodb/issues/251 mà có vẻ là lỗi tương tự, tôi theo những gì người khác nói giải quyết vấn đề của họ bằng cách thay đổi [email protected] nhưng vẫn không có may mắn ...
bạn đã nói rằng lỗi này xảy ra khi bạn có 'hoạt động khác' trên nền tảng. Tất cả các tập tin đính kèm mlab đều có cờ 'auth', vì vậy bạn phải cung cấp thông tin auth của bạn (và bạn đã làm nó như tôi thấy). Có thể bạn có nhiều dbs hơn với các thông tin xác thực khác nhau nhưng có thể truy cập từ cùng một URI? hoặc có thể DBs khác nhau cho dev/dàn dựng/môi trường sản xuất? cố gắng thiết lập lại thông tin auth của bạn, đây là tài liệu: http://docs.mlab.com/connecting/#authentication –
@AlbertoFecchi Vâng chính thức, tôi dường như có một bộ bản sao: mongodb: //: @, /? ReplicaSet = . Điều đó có giúp được gì không? –
denislexic
@AlbertoFecchi Nó không có vẻ là hoạt động, nhưng xảy ra sau một thời gian nhàn rỗi trên máy chủ. Vì vậy, khi tôi khởi động lại, mọi thứ hoạt động tốt, sau đó sau ~ 5 phút không hoạt động, yêu cầu tiếp theo không thành công. Và nó luôn luôn thay đổi bộ sưu tập (từ sinh viên, tài liệu, vai trò, tài liệu, ...). – denislexic