如何在 MongoDB 和 sails.js 中使用集合?

How do I use collections in MongoDB and sails.js?

问题:

我想从嵌套在另一个模型中的一个模型中获取一个属性。

我的解决方案:

我的应用中有两个模型,一个是用户,一个是事件:

用户:

attributes: {
    name: 'STRING',
    email: 'STRING',
    events: {
        collection: 'event',
        via: 'author'
    }
}

事件:

attributes: {
    date: 'STRING',
    time: 'STRING',,
    other: 'STRING',
    author: {
        model: 'user'
    }
}

一个用户应该能够创建多个事件,其中一个事件只能有一个作者。我真的不知道我应该如何进行创建事件和显示事件的查询。

现在我正在用这个查询创建一个事件:

var newEvent = {
    date: req.param("date"),
    time: req.param("time"),
    other: req.param("other"),
    author: req.user
}

Event.create(newEvent).exec(function(err, model){
    console.log("New event created");
    console.log(model);
    return res.redirect("/account");
});

这是将作者设置为用户 ID,我想这是正确的。这里的一个问题是,我是否也必须更新用户模型中的集合?我猜不是,但我不确定。

我正在使用此查询获取一些随机事件:

Event.find().limit(5).exec(function(err, events) {
    return res.view({
        events: events
    });
});

我想在 ejs 模板中获取用户名:

<% for( var i=0; i < events.length; i++) { %>
<li>
    <h3><%- events[i].author.name %></h3>
</li>
<% } %>

但这不起作用。我想我在收集领域做错了什么,但我不知道是什么。有什么建议吗?

我找到了答案。我将 populateAll 添加到执行连接操作的查询中。

Event.find().limit(5).populateAll().exec(function(err, events) {
    return res.view({
        events: events
    });
});