【问题标题】:sailsJs, error using two controllerssailsJs,使用两个控制器时出错
【发布时间】:2014-09-28 22:42:06
【问题描述】:

在sails.Js 中,如何使用具有两个模型的控制器?

喜欢,在我的页面上有一个参考<%= user.city%>, 在另一个模型中,我有一个类似的列表:

{ street }, { state }, { house }

我该怎么做才能在我的页面中使用<%= user.city.street%>

信息:我有两个模型,“用户”和“信息”,列表在信息模型中。

【问题讨论】:

    标签: node.js sails.js sails.io.js


    【解决方案1】:

    您是否在“用户”中关联了模型“信息”?

    模型用户

    city: {
                model: "Info"
            },
    

    然后在控制器中填充城市,

    User.find().populate('city').exec(function(err,users){res.view(users);});
    

    所以你可以使用<%= user.city.street%>

    【讨论】:

    • 我试过了,但是当我使用 populate('city') 时,我得到一个错误:在为.populate("city") 构建连接指令时遇到意外错误,我试过方法 populateAll,但它也不起作用。详细信息:[错误:在.populate("city"),试图填充不存在的属性]
    • 你有没有在Model User.js中放入city属性,然后关联city?
    • 您是否在信息模型中存储街道、州、房屋等,并尝试通过用户模型中的城市属性填充它?如果那时..我会说当您在信息中存储位置信息(街道、州、房子)时,您可以制作位置模型来存储(街道、州、房子),然后通过location:{model:"Location"} 将其关联到用户模型中,并且然后将其填充为User.find().populate('location')...希望对您有所帮助。
    • 是的,我尝试了另一种方法,我将控制器 function from User.findOne(req.param('id')).populateAll().exec( function foundUser(err, user){ 更改为 User.findOne(req.param('id')).populateAll().exec( function foundUser(err, user) { Info.findOne(req.param('id')).populateAll().exec( function foundCity(err, city) { res.view({ user: user city: city }); }
    • 一切正常,很好,你的回答对我帮助很大,现在我只想知道:这种方法是有效的选择吗?否则会导致我的项目出错?
    猜你喜欢
    • 2016-10-09
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多