Ich verstehe, dass es in Sails.js/Waterline keine eingebaute Weise gibt, tief verschachtelte Assoziationen noch zu bevölkern, also versuche ich, Bluebirdversprechungen zu benutzen, um das zu erreichen, aber ich bin in ein Problem geraten.Sails.js/Waterline bevölkern tiefe verschachtelte Assoziation
Ich bin erfolgreich Abrufen des Benutzers, und alle Beiträge (mit der Bildersammlung gefüllt) damit verbunden (console.log zeigt mir, dass alles richtig gefüllt ist). Wenn ich jedoch die Eigenschaft "post" des Benutzers überschreibe und versuche, die vollständig bearbeiteten Posts, die zuvor abgerufen wurden, zuzuweisen, wird die image-Eigenschaft von Post.js nicht richtig ausgefüllt. Es ist, als ob das ORM verhindert, dass die Bildsammlung von Post.js manuell zugewiesen wird.
Was mache ich falsch? Wie bevölkert man am besten tief verschachtelte Eins-zu-Viele-Assoziationen?
Bellow ich den gesamten Code eingefügt haben, die ich ausführen bin ....
// 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"
}
},
}
Grüße,
Sávio Lucena
Jani, könnten Sie weiter in Ihrer Antwort graben? Ich habe versucht, alle Arten von Überschreiben, aber irgendwie, weil Bilder eine Viele-zu-Viele-Verbindung ist verhindert es, dass bestimmte Feld überschrieben werden. –