2015-08-16 19 views
5

tôi biết làm thế nào để thiết lập một đến nhiều mối quan hệ giữa các thực thể Mongoose, với các loại mã sau đây:Mối quan hệ One-To-One với mongoose?

friends: [{type: ObjectId, ref: 'User'}] 

Nhưng nếu tôi muốn chỉ có một one-to-one mối quan hệ - Chẳng hạn khách hàng này có liên quan đến khách hàng nào?

+3

Sau đó, chỉ cần không sử dụng mảng. – qqilihq

+0

Cảm ơn, nhưng điều này không thực sự hữu ích - tôi mới sử dụng nút và mongoose, vì vậy cú pháp là xa lạ với tôi. – Slippy

Trả lời

5

Trước hết, có một sự khác biệt rất lớn giữa các mối quan hệ trong MongoDB và những người trong kho dữ liệu dựa trên SQL (bạn cần phải rõ ràng về điều này từ get-go).

Mối quan hệ trong MongoDB chỉ là biểu diễn của dữ liệu liên quan. Không có cơ chế duy trì tính toàn vẹn của các mối quan hệ này.

Mongoose với refs chỉ sử dụng trường có tùy chọn ref để truy vấn trường tài liệu _id trong bộ sưu tập được tham chiếu. Điều này được sử dụng cho các hoạt động như populate (gọi nội bộ là findById truy vấn trên bộ sưu tập đích và thay thế trường được tham chiếu bằng tài liệu).

Điều này đang bị xóa, bạn có thể lưu trữ một hoặc nhiều ID cho bộ sưu tập được tham chiếu trong trường, do đó tạo mối quan hệ "một đối một hoặc một".

Vì vậy, để lưu trữ một ID duy nhất cho một bộ sưu tập tham chiếu, cú pháp sẽ là:

client: {type: Mongoose.Schema.Types.ObjectId, ref: 'Client'} //No arrays, as we want to store a single ID only. 

Trong cùng một cách, bạn có thể lưu trữ nhiều ID cho bộ sưu tập tham chiếu như vậy:

friends: [{type: Mongoose.Schema.Types.ObjectId, ref: 'User'}] //The array stores multiple IDs, creating a one-to-many "relationship" 

EDIT:

Đảm bảo bạn có require d mô-đun Mongoose lúc đầu.

var Mongoose = require('mongoose'); 
+0

Khi tôi làm điều đó, tôi nhận được lỗi sau: "Lỗi tham chiếu: ObjectId không được xác định" – Slippy

+0

@Slippy vui lòng kiểm tra chỉnh sửa. – ZeMoon

+0

Tôi đã yêu cầu nó. Nhưng nó không hoạt động. – Slippy

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