2016-03-02 58 views
0

如果我有一個模式像這樣在我的貓鼬
貓鼬找到數據字段從架構到服務

'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 

但我想找到按名稱文檔這是我的架構中的數據字段。
我試圖通過修改_idname但這個錯誤結束...

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

您使用的是哪個版本的Mongoose?有一種我使用的Mongoose 3.8版本也導致了這個錯誤。但是我讀過Mongoose的Github Repo,它已經在版本4.x中解決了。 –

+0

有許多不同的方法可以查詢貓鼬模式,並且可以在線獲取大量的資源。例如:http://stackoverflow.com/questions/5813979/how-do-i-perform-a-query-in-mongoose – fqhv

+0

即時通訊使用「貓鼬」:「3.8.1」....在服務我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

我wana通過服務測試「http:// localhost:8001/lov /:名稱」存儲的名稱內容應retrived .... im期待像數據... –