2016-10-27 1 views
0

Donc je développe une application utilisant voiles js. Je veux envoyer un fil avec ses commentaires en guise de réponse.Le modèle ne montre que l'ID dans le modèle imbriqué dans Sails

ici est mon modèle

Thread.js

module.exports = { 

    attributes: { 
    id: { 
     type: "integer", 
     primaryKey: true, 
     autoIncrement: true 
    }, 
    title: "string", 
    content: "string", 
    userId: { 
     model: "user" 
    }, 
    createdAt: "string", 
    isSecret: "boolean", 
    comments: { 
     collection: "comment", 
     via: "threadId" 
    } 
    } 
}; 

Comment.js

module.exports = { 

    attributes: { 
    id: { 
     type: "integer", 
     primaryKey: true, 
     autoIncrement: true 
    }, 
    threadId: { 
     model: "thread" 
    }, 
    content: "string", 
    createdAt: "string", 
    isSecret: "boolean", 
    userId: { 
     model: "user" 
    } 
    } 
}; 

A l'intérieur du commentaire, il y a deux modèles imbriqués, l'utilisateur et du fil. Mais la réponse ne montre que l'ID

{ 
    "comments": [ 
    { 
     "threadId": 4, 
     "content": "Comment of thread one.", 
     "createdAt": "10-27-2016 09:39:50", 
     "isSecret": false, 
     "userId": 5, 
     "updatedAt": "2016-10-27T01:50:19.968Z", 
     "id": 3 
    } 
    ], 
    "userId": { 
    "firstName": "Tio", 
    "LastName": "Ammar", 
    "email": "[email protected]", 
    "userName": "tioammar", 
    "avatar": "https://tioammar.com/avatar.jpg", 
    "createdAt": "2016-10-27T01:33:02.076Z", 
    "updatedAt": "2016-10-27T01:33:02.076Z", 
    "id": 5 
    }, 
    "title": "Initial Thread", 
    "content": "Content of initial thread.", 
    "createdAt": "10-27-2016 09:34:50", 
    "isSecret": false, 
    "updatedAt": "2016-10-27T01:35:29.559Z", 
    "id": 4 
} 

Je voudrais montrer le modèle d'utilisateur réel. S'il vous plaît aider et merci d'avance! :)

Répondre

2

Je pense que ce que vous cherchez est population profonde/imbriquée. Here is a similar question. Malheureusement, Waterline ne prend pas en charge les populations profondes et si vous souhaitez continuer à utiliser Waterline, vous devrez effectuer plusieurs requêtes pour y parvenir. L'une des requêtes supplémentaires pourrait ressembler à quelque chose comme ...

Comment.find({threadId: thread.id}) 
    .populate("userId") 
    .exec(function(err, comments){ 
    if(err)... 
    thread.comments = comments; 
    }); 

Si vous décidez de le faire, vous pourriez avoir issues using toJSON().

+0

Le remplissage profond est disponible dans la fourche de Waterline avec quelques fonctionnalités fraîches fusionnées. Il est appelé Offshore ORM et vous pouvez l'ajouter à Sails.js avec hook: https://github.com/Atlantis-Software/sails-hook-orm-offshore – Bonanza