我在mongodb中有一个followers
集合,如下所示:
[{
user : <userId> ,
followers : [
{
user : <userId>
, createdOn : <Date>
,...
}
,
{
user : <userId>
, createdOn : <Date>
,...
}
]
},
{
user : <userId> ,
followers : [
{
user : <userId>
, createdOn : <Date>
,...
}
,
{
user : <userId>
, createdOn : <Date>
,...
}
]
}]
当用户请求
/api/users/<userId>/followers
时,我尝试提供用户<userId>
的所有关注者。此外,我还尝试设置一个标志来表示<userId>
的特定关注者是否被loggedIn
用户关注。我尝试输出以下内容:{
user : <userId>
, followers : [
{
user : <userId>
, isFollowing : <Boolean>
}
,
{
user : <userId>
, isFollowing : <Boolean>
}
]
}
我尝试了一下,但我的失败尝试看起来像这样:
app.get('/users/:userId/followers', function(req, res) {
var userId = req.params.userId;
var loginUser = req.user._id; // I am using passport for user authentication
var Follower = mongoose.model('followers'); // I am using mongoose also
var DocumentObjectId = mongoose.Types.ObjectId;
Follower.aggregate([
{$match : { user : DocumentObjectId(userId)}}
, {$project : {"followers" : 1, "_id" : 0}}
, {$unwind : "$followers"}
, {$group : {
_id : {"user : "$user"}
, "followers" : {$push:{
"user" : "$followers.user"
, "isFollowing" : {$and : [{user: "$followers.user"}, {"followers.user" : loginUser}]}
}}
}}
])
})
但是我从mongodb得到了这个错误:
exception: 点分字段名只允许在顶层
我应该怎么做才能知道特定的follower
是否正在被logged in user
关注。这样当某个用户查看另一个用户的关注者时,我就可以在UI中显示Follow
或Unfollow
按钮。