2016-03-02 3 views
0

Если у меня есть схемы, как это в моем мангусте
Mongoose найти на поле данных из схемы в службы

'use strict'; 

var mongoose = require('mongoose'), 
    Schema = mongoose.Schema; 

var lovSchema = new mongoose.Schema({ 
    name : { type: String }, 
    values : [{ type: String }] 
}); 

module.exports = mongoose.model('lovs', lovSchema); 

Вообще в мангусте мы найти документ с Reff в _id из коллекций.

function getOneById(id){ 
    var deferred = Q.defer(); 

    model.findOne({ _id: id }) 
     .exec(function (err, item) { 
      if(err) { 
       console.log(err); 
       deferred.reject(err); 
      } 
      else 
       console.log(item); 
       deferred.resolve(item); 
      }); 

    return deferred.promise; 
} // gentOneById method ends 

Но я хочу найти документ по имени, который является полем данных в моей схеме.
Я пытался путем изменения _id с name, но в итоге с этой ошибкой ...

{ 
    "message": "Cast to ObjectId failed for value \"regions\" at path \"_id\"", 
    "name": "CastError", 
    "type": "ObjectId", 
    "value": "regions", 
    "path": "_id" 
} 
+0

Какую версию Mongoose вы используете? Была некоторая ошибка, с которой я столкнулся, используя версию Mongoose версии 3.8, которая вызывала эту ошибку. Но я прочитал о Github Repo от Mongoose, что это было разрешено в версии 4.x. –

+0

Существует множество различных способов запроса схем мангуста и множество ресурсов, доступных в Интернете. Например: http://stackoverflow.com/questions/5813979/how-do-i-perform-a-query-in-mongoose – fqhv

+0

im использование «mongoose»: «3.8.1» .... в сервисах i wana поиск по имени поля не по id ... dats требование .... –

ответ

0

Просто используйте имя со значением строки:

function getOneByName(name){ 
    var deferred = Q.defer(); 

    model.findOne({ name: name}) 
    .exec(function (err, item) { 
     if(err) { 
      console.log(err); 
      deferred.reject(err); 
     } 
     else 
      console.log(item); 
      deferred.resolve(item); 
     }); 

    return deferred.promise; 
} // gentOneById method ends 

Вы можете проверить, как это:

model.findOne({ name: "Bob"}) 

И посмотрите, есть ли у вас еще ошибка ...

+0

i wana test через службы "http: // localhost: 8001/lov /: name" содержимое, сохраненное по имени, должно быть восстановлено .... im ожидая, что ... –