数据模块属于用户 MEANJS
data modules belongs to user MEANJS
我真的是 MEANJS 的新手,经过几天的 google 研究,我找不到一个好的方法和一个好的教程来学习如何制作一种文章模块(比如 MEANJS starter 中的那个) ) 属于一个用户。
现在我的 crud 模块运行良好,但所有数据都显示给所有用户。我只希望用户可以添加文章(这里有另一个名字,但无论如何)并且只有这个用户可以看到这篇文章。
我在这里找到了你的问题,你看起来已经实现了我正在尝试的某种东西。因此,如果您有任何提示或任何资源可以帮助我,我就起来了!当然,我已经阅读了有关人口的猫鼬文档部分,我确定就是这样,但是仅此一项就很难。我已经尝试 link 我的用户模块和文章模块但是没有用。
谢谢你的时间,祝你编码日愉快:)
来自巴黎的问候。
如果您检查文章的 mongodb 条目,它已经包含创建该文章的用户 ObjectId:
> db.articles.find()
{ "_id" : ObjectId("55c7751dbafe1a306b6ce54d"), "user" : ObjectId("55c774f9bafe1a306b6ce54c"), "content" : "My latest test. another info", "title" : "Test", "created" : ISODate("2015-08-09T15:43:25.467Z"), "__v" : 0 }
{ "_id" : ObjectId("55c7c2edd4bc5f277b775ba9"), "user" : ObjectId("55c774f9bafe1a306b6ce54c"), "content" : "ATESTE", "title" : "TESTE", "created" : ISODate("2015-08-09T21:15:25.762Z"), "__v" : 0 }
>
单击"List Articles"菜单项时加载所有文章的原因是articles.server.controller.js中文章的列表实现没有限制查找仅加载已登录的用户文章,默认实现加载来自 mongodb 的所有文章:
/**
* List of Articles
*/
exports.list = function (req, res) {
Article.find().sort('-created').populate('user', 'displayName').exec(function (err, articles) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(articles);
}
});
};
我从来没有尝试过,但我相信做你想做的最简单的方法是改变那个调用有一个标准并只加载来自登录用户的文章,比如:
/**
* List of Articles
*/
exports.list = function (req, res) {
Article.find({user: req.user}).sort('-created').populate('user', 'displayName').exec(function (err, articles) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(articles);
}
});
};
这个或类似的东西(我没有测试)现在应该只显示登录用户创建的文章。查看 mongoose 查询的详细信息 here.
我真的是 MEANJS 的新手,经过几天的 google 研究,我找不到一个好的方法和一个好的教程来学习如何制作一种文章模块(比如 MEANJS starter 中的那个) ) 属于一个用户。
现在我的 crud 模块运行良好,但所有数据都显示给所有用户。我只希望用户可以添加文章(这里有另一个名字,但无论如何)并且只有这个用户可以看到这篇文章。
我在这里找到了你的问题,你看起来已经实现了我正在尝试的某种东西。因此,如果您有任何提示或任何资源可以帮助我,我就起来了!当然,我已经阅读了有关人口的猫鼬文档部分,我确定就是这样,但是仅此一项就很难。我已经尝试 link 我的用户模块和文章模块但是没有用。
谢谢你的时间,祝你编码日愉快:) 来自巴黎的问候。
如果您检查文章的 mongodb 条目,它已经包含创建该文章的用户 ObjectId:
> db.articles.find()
{ "_id" : ObjectId("55c7751dbafe1a306b6ce54d"), "user" : ObjectId("55c774f9bafe1a306b6ce54c"), "content" : "My latest test. another info", "title" : "Test", "created" : ISODate("2015-08-09T15:43:25.467Z"), "__v" : 0 }
{ "_id" : ObjectId("55c7c2edd4bc5f277b775ba9"), "user" : ObjectId("55c774f9bafe1a306b6ce54c"), "content" : "ATESTE", "title" : "TESTE", "created" : ISODate("2015-08-09T21:15:25.762Z"), "__v" : 0 }
>
单击"List Articles"菜单项时加载所有文章的原因是articles.server.controller.js中文章的列表实现没有限制查找仅加载已登录的用户文章,默认实现加载来自 mongodb 的所有文章:
/**
* List of Articles
*/
exports.list = function (req, res) {
Article.find().sort('-created').populate('user', 'displayName').exec(function (err, articles) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(articles);
}
});
};
我从来没有尝试过,但我相信做你想做的最简单的方法是改变那个调用有一个标准并只加载来自登录用户的文章,比如:
/**
* List of Articles
*/
exports.list = function (req, res) {
Article.find({user: req.user}).sort('-created').populate('user', 'displayName').exec(function (err, articles) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(articles);
}
});
};
这个或类似的东西(我没有测试)现在应该只显示登录用户创建的文章。查看 mongoose 查询的详细信息 here.