Trong couple
của bạn người mẫu, person1
là một ObjectID (tôi biết bạn biết điều đó), vì vậy nó rõ ràng không có thuộc tính .firstname
.
Trên thực tế, cách tốt nhất để đạt được điều này, là tìm người dùng theo tên của họ, sau đó truy vấn cặp đôi, với id
của người dùng.
Phương thức này có thể / nên đứng trong cặp couple
mô hình như một phương thức tĩnh (mẫu mã đơn giản hóa):
couple.statics.findByPersonFirstname = function (firstname, callback) {
var query = this.findOne()
Person.findOne({firstname: firstname}, function (error, person) {
query.where($or: [
{person1: person._id},
{person1: person._id}
]).exec(callback);
})
return query
}
Chỉ cần thích ví dụ này .
CHỈNH SỬA:Cũng lưu ý rằng ref phải là _id
(vì vậy bạn không thể lưu trữ với tên đầu tiên, đó sẽ là một ý tưởng tồi).
Xem xét chỉnh sửa của bạn:
Person._id
có thể là một String
và tham chiếu là một ObjectId
, nếu vậy, hãy thử:
{person1: mongoose.Types.ObjectId(Person._id)}
Ngoài ra, biến của bạn là person
chứ không phải Person
. Cố gắng ghi lại person
để xem bạn có nhận được gì không.
Cuối cùng, mẫu mã của tôi thực sự rất đơn giản, đừng quên xử lý các lỗi và tất cả (xem liên kết tôi đã cung cấp cho bạn ở trên, đã hoàn thành).