Скажем, у меня есть схема пользователя:MongoDb Вложенный запрос массив для следующих отношений
UserSchema = new Schema({
name: {
first: { type: String, trim: true },
last: { type: String, trim: true }
},
username: { type: String, trim: true, required: true },
email: { type: String, trim: true, required: true },
hashed_password: { type: String, trim: true, required: true },
profile_image: { type: String, trim: true, default: 'default' },
join_date: { type: Date, required:true },
userFollows: [ {
status : { type: String, enum: [
'following',
'followed_by'
]},
added : { type: Date, required:true },
user : { type: Schema.ObjectId, ref: 'User'}
} ]
})
мне нужно нажать новую userFollows в этой схеме, но мне также нужно проверить пользователя в настоящее время не следовать за пользователем (дублировать запись), но я не уверен, как выполнить этот запрос
текущий запрос я пытаюсь использовать это:
User
.findOne(
{ username: req.user.username },
{ "userFollows.user": { $not: req.body.userID } }
)
.exec(function (err, currentUser) {
})
но это не работает.
Я хотел бы избежать зацикливания через массив currentUser.userFollows после того, как запрос выполняется вручную проверки
Final userFollows объекта Мне нужно нажать, выглядит так:
{
_id: ObjectId("53073acd9256e81e4d7b5d8e"),
status: "followed_by",
added: ISODate("2014-02-21T11:38:53.828Z"),
user: ObjectId("51c6ec9fedc1230700000007")
}
Просто предположим, что-то вроде 'findOne {имя пользователя: req.user.username," userFollows.user ": {$ ne: req.body.userID}})' должен работать. Важным отличием является вызов findOne с одним объектом, а не с двумя. –
Я получаю эту ошибку: {"code": "InternalError", "message": "Невозможно прочитать свойство userFollows" из null "} как с моим запросом, так и с указанным выше –