2016-03-10 3 views
1

Ниже мой экспресс-конечная точка, которая возвращает пустой массивMongoose запрос возвращение пустого массива

router.get('/myUnits/:landlord_id', wagner.invoke((Apartment) => { 
    return (req, res) => { 
     Apartment.find({ postedBy: req.params.landlord_id }, (err, apt) => { 
     if (err) { 
      return res.status(status.INTERNAL_SERVER_ERROR) 
        .json({ error: err.toString() }) 
     } 
     if (!apt) { 
      return res.status(status.NOT_FOUND) 
        .json({ error: 'Not found' }) 
     } 
     return res.json(apt) 
     }) 
    } 
    })) 

Apartment.find({ price: 200 }) Я изменил и он запрашивает все данные с price: 200 но запрашивая postedBy не работает.

Когда я иду в Монго оболочки и сделать запрос

db.apartments.find({ postedBy: 'the id of the account here' }) 

возвращает соответствующие данные.

https://gyazo.com/77afa64f9afb75f47667d0f47757c3e4

+0

добавить console.log (req.params.landlord_id) выше Apartment.find. Каков результат? Если это ожидаемый идентификатор, попробуйте удалить 'orderedBy: req.params.landlord_id' из' Apartment.find ({... 'теперь он должен вернуть все из db. Это? – Molda

+0

@Molda спасибо за немедленный ответ Да, он возвращает все из моего db, но я хочу, чтобы он возвращал данные, характерные для арендодателя. Как это сделать? – ken

+0

Просто хотел убедиться, что все работает правильно. Вы не ответили на мой первый вопрос tho, What is вывод console.log (req.params.landlord_id), помещенный выше Apartment.find? В противном случае ваш код выглядит нормально, я не вижу никакой проблемы – Molda

ответ

0

Я понял это. Это было в моей схеме все время.

let apartmentSchema = { 
    name: { type: String, required: true }, 
    price: { type: Number, required: true }, 
    promotion: { type: String, required: true }, 
    postedOn: { type: Date, required: true }, 
    postedBy: { 
    type: mongoose.Schema.Types.ObjectId, // this was the culprit 
    required: true 
    } 
} 

Я просто изменил тип на String. Я использовал ObjectId из предыдущего api, который я давно обновлял. Благодарим за терпение!

+0

Хорошо, это может быть и строка. Но вы должны добавить ссылку: 'postedBy: { Тип: mongoose.Schema.Types.ObjectId, ref: 'Пользователь' }' – Cohars

Смежные вопросы