2015-01-08 3 views
0

В моей схеме Mongoose у меня есть поле id, которое имеет уникальный идентификатор для каждого документа. Это сбегает ту же систему, используемую поле по умолчанию _id как так:Запрос Mongoose для поля id возвращает id и _id

var JobSchema = new mongoose.Schema({ 
    id: { type:String, required:true, unique:true, index:true, default:mongoose.Types.ObjectId }, 
    title: { type: String }, 
    brief: { type: String } 
}); 

module.exports = mongoose.model("Job", JobSchema); 

Теперь, если я запрашиваю схему, чтобы получить идентификатор и название, которое я хотел бы сделать это следующим образом:

Job.find().select("id title").exec(function(err, jobs) { 
    if (err) throw err; 
    res.send(jobs); 
}); 

Однако , Я нашел, что возвращает id и title, как и ожидалось, но также возвращает поле по умолчанию _id. Почему это и как его остановить?

ответ

2

Внутри функции find() вы можете передать два параметра (критерии и проецирование). Проецирование - это поля, которые вы хотите (или нет). В вашем случае вы можете изменить свой код на

Job.find({}, {_id:0, id: 1, title: 1}, function(err, jobs) { 
    if (err) throw err; 
    res.send(jobs); 
}); 

и он должен это сделать.

+0

Удивительно, я никогда не знал, что вы можете это сделать! Большое спасибо – Coop

+0

Рад помочь :) – augustoccesar

+2

@Coop Вы также можете просто добавить '-_id' к существующему вызову' select', так что это 'Job_find(). Select (" -_ id id title ")' – JohnnyHK

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