MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongoose:CastError:Truyền tới ObjectId không thành công cho giá trị [đối tượng Đối tượng] tại đường dẫn _id

Câu trả lời ngắn gọn:sử dụng mongoose.Types.ObjectId .

Mongoose (nhưng không phải mongo) có thể chấp nhận id đối tượng dưới dạng chuỗi và "truyền" chúng đúng cách cho bạn, vì vậy chỉ cần sử dụng:

MyClass.findById(req.params.id)

Tuy nhiên, lưu ý là nếu req.params.id không phải là định dạng hợp lệ cho chuỗi ID mongo, điều này sẽ tạo ra một ngoại lệ mà bạn phải bắt.

Vì vậy, điều khó hiểu chính cần hiểu là mongoose.SchemaTypes có những thứ bạn chỉ sử dụng khi xác định lược đồ mongoose và mongoose.Types có nội dung bạn sử dụng khi tạo đối tượng dữ liệu bạn muốn lưu trữ trong cơ sở dữ liệu hoặc đối tượng truy vấn. Vì vậy, mongoose.Types.ObjectId("51bb793aca2ab77a3200000d") hoạt động, sẽ cung cấp cho bạn một đối tượng mà bạn có thể lưu trữ trong cơ sở dữ liệu hoặc sử dụng trong các truy vấn và sẽ đưa ra một ngoại lệ nếu được cung cấp một chuỗi ID không hợp lệ.

findOne nhận một đối tượng truy vấn và chuyển một cá thể mô hình duy nhất đến lệnh gọi lại. Và findById nghĩa đen là trình bao bọc của findOne({_id: id}) (xem mã nguồn tại đây). Chỉ cần find nhận một đối tượng truy vấn và chuyển một mảng các phiên bản mô hình phù hợp tới lệnh gọi lại.

Đi chậm thôi. Thật khó hiểu nhưng tôi có thể đảm bảo với bạn rằng bạn đang bối rối và không gặp lỗi trong mongoose vào thời điểm này. Đó là một thư viện khá trưởng thành, nhưng cần một thời gian để khai thác nó.

Điều đáng ngờ khác mà tôi thấy trong đoạn mã của bạn là không sử dụng new khi khởi tạo ChildClass . Ngoài ra, bạn sẽ cần đăng mã lược đồ của mình để chúng tôi giúp bạn tìm ra bất kỳ lỗi CastErrors nào còn sót lại.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lưu trữ cấu trúc phân cấp thư mục trong kho dữ liệu giá trị-khóa

  2. Sao chép MongoDB qua môi trường đám mây lai

  3. Cách kết nối mongodb từ xa với pymongo

  4. Dữ liệu mùa xuân MongoDb:MappingMongoConverter loại bỏ _class

  5. MongoDB $ toDate