2016-11-02 16 views
7

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 ...

+0

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 –

+0

@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

+0

@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

Trả lời

4

Giải pháp là cập nhật Loopback lên phiên bản mới nhất. Thư viện Loopback bao gồm trình điều khiển Node MongoDB như một phụ thuộc và sử dụng trình điều khiển để kết nối với một cơ sở dữ liệu MongoDB.

Các phiên bản trước của trình điều khiển Nút MongoDB có các vấn đề về kết nối/xác thực đã biết. Bằng cách cập nhật lên phiên bản Loopback mới nhất, phiên bản mới hơn của trình điều khiển Nút đã được cài đặt.

+0

Cập nhật bài đăng chính. Tôi chỉ thử với một vài phiên bản khác nhau nhưng không có phiên bản nào hoạt động. – denislexic

Các vấn đề liên quan