Tôi hiểu rằng không có cách tích hợp trong Sails.js/Waterline của các liên kết lồng nhau sâu, vì vậy tôi đang cố gắng sử dụng lời hứa bluebird để thực hiện điều đó nhưng tôi chạy vào một vấn đề.Sails.js/Waterline điền vào liên kết lồng nhau sâu
Tôi đang truy xuất thành công người dùng và tất cả các bài đăng (được điền bằng bộ sưu tập hình ảnh) được liên kết với nó (console.log cho tôi biết mọi thứ được điền chính xác). Tuy nhiên, khi tôi ghi đè thuộc tính "bài đăng" của người dùng và cố gắng chỉ định các bài đăng được điền đầy đủ được truy xuất trước đó, nó không điền đúng thuộc tính hình ảnh của Post.js. Nó giống như ORM đang ngăn cản bộ sưu tập hình ảnh của Post.js được gán thủ công.
Tôi đang làm gì sai? Cách tốt nhất để điền các liên kết lồng nhau từ một đến nhiều là gì?
Bellow Tôi đã dán tất cả các mã mà tôi đang thực hiện ....
// Populate nested association
nested: function (req, res, next){
var username = req.param("id");
User
.findOneByUsername(username)
.populateAll()
.then(function (user){
var posts = Post.find({
"user": user.id
})
.populate('images')
.populate('category')
.then(function (posts){
return posts;
});
return [user, posts];
})
.spread(function (user, posts){
user.posts = posts; // This won't work.... It assigns all the fields properly but the images collection attribute
res.json(user);
}).catch(function (err){
if (err) return res.serverError(err);
});
}
// --- User.js Model --- //
module.exports = {
attributes: {
.....,
posts: {
collection: "post",
via: "user"
},
.....
}
}
// --- Post.js Model --- //
module.exports = {
attributes: {
....,
user: {
model: "user"
},
images: {
collection: "postImage",
via: "post"
},
....
}
}
// --- PostImage.js Model --- //
module.exports = {
attributes: {
....,
post: {
model: "post"
}
},
}
Kính trọng,
Savio Lucena
Jani, bạn có thể khai thác thêm trong câu trả lời của bạn? Tôi đã thử tất cả các loại ghi đè, nhưng bằng cách nào đó bởi vì hình ảnh là một liên kết nhiều-nhiều, nó ngăn chặn trường cụ thể đó bị ghi đè. –