2017-04-19 76 views
0

我遇到了一個問題,我似乎無法解決過去幾個小時。讓我們開始吧。'null'進入Mongoose查詢'findOne()'

目前使用的是最新快遞的版本和貓鼬

我已經在我的route.js查詢以下路線:

Note 
    .findOne({"user": req.body.user, "title": req.body.title, "subtitle": 
    req.body.subtitle}) 
    .exec(function (err, note) { 
     if (err) {handleError(err)}; 
     console.log(note._id); 
    }) 
    //same implementation as the in the mongoose docs 

然後,我有以下的客戶端腳本Ajax請求:

let settings = { 
     type: 'GET', 
     url: 'http://localhost:8080/note', 
     data: { 
      "user": userId, 
      "title": noteTitle, 
      "subtitle": noteSubtitle 
     }, 
     dataType: "json", 
     success: renderGetNoteTemplate 
    } 
    return $.ajax(settings); 

現在的問題是,即使在一個文檔中的數據庫和右組確實存在,查詢結果爲空。在經過幾個小時的閱讀本網站的線程並記錄到控制檯之後,我決定將查詢記錄到控制檯,並看到了這個!

_conditions: { subtitle: null, title: null, user: null }

所以傳遞的條件爲空,這顯然將返回null。現在,這是抓住。該查詢與如條件下工作:

Note.findById(req.cookies.note).exec()

,我可以看到存在差異,該請求不是來自身體的到來。所以我上面通過Ajax請求發送的條件與類似

{"title": req.body.title}

最後,當我剛打印req.body.title等控制檯沒有它傳遞到查詢,值來向上。例如,我將羅密歐與朱麗葉作爲noteTitle傳入,當我在服務器控制檯上打印它時,我得到了Romeo And Juliet的價值。只要我將它傳遞給查詢作爲出現問題的條件。

字面上看起來無處不在,尤其是我給模型命名的方式等等。再次,當我將req.body參數傳入條件時,我得到空結果。

此外,爲了簡潔起見,我沒有在代碼中包含bodyParser,所以當它沒有進入查詢條件時,它們會顯示出來。

什麼使這些參數變爲空的任何想法?

感謝

回答