我想从一个嵌套在另一个模型中的模型中获取一个属性。
我的应用程序中有两个模型,一个是用户,另一个是事件:
用户:
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-template中获取用户名:
<% for( var i=0; i < events.length; i++) { %>
<li>
<h3><%- events[i].author.name %></h3>
</li>
<% } %>
但这不起作用。我想我在收集领域做错了但我不知道是什么。有什么建议吗?
答案 0 :(得分:2)
我找到了答案。我将populateAll添加到正在进行连接的查询中。
Event.find().limit(5).populateAll().exec(function(err, events) {
return res.view({
events: events
});
});