【发布时间】:2014-07-04 10:03:34
【问题描述】:
我正在使用 Sails.js 版本 0.10.x,并且刚刚开始尝试它是 associactions 的东西。
在我的场景中,我有一个拥有许多文档的用户。
所以在/api/models/User.js 我有:
module.exports = {
// snipped out bcrypt stuff etc
attributes: {
email: {
type: 'string',
unique: true,
index: true,
required: true
},
documents: {
collection: 'document',
via: 'owner'
},
}
};
在/api/models/Document.js 我有:
module.exports = {
attributes: {
name: 'string',
owner: {
model: 'user'
}
}
};
在我的DocumentController 我有以下内容:
fileData = {
name: file.name,
owner: req.user
}
Document.create(fileData).exec(function(err, savedFile){
if (err) {
next(err);
} else {
results.push({
id: savedFile.id,
url: '/files/' + savedFile.name,
document: savedFile
});
next();
}
});
通过命令行查看我的本地mongo 数据库,我可以看到文档的所有者字段设置如下"owner" : ObjectId("xxxxxxxxxxxxxxxxxxxxxxxx"),这是预期的。
但是,当我稍后通过 sails.log.debug("user has documemts", req.user.documents); 在 DocumentController 中检查 req.user 对象时,我看到了
debug: user has documents [ add: [Function: add], remove: [Function: remove] ]
而不是 Document 对象的数组。
在我生成的slim 模板中
if req.user.documents.length > 0
ul
for doc in req.user.documents
li= doc.toString()
else
p No Documents!
我总是得到“没有文件!”
我似乎遗漏了一些明显的东西,但我不确定那是什么。
【问题讨论】:
标签: javascript node.js mongodb associations sails.js