2017-06-04 194 views
0

我目前正在嘗試查找所有在'foo'鍵中具有'bar'值的文檔。使用mongodb和nodejs。查找()方法MongoDB和Nodejs

當我嘗試運行此操作時,得到: 「TypeError:無法讀取未定義的」錯誤返回「屬性'find'。

如果我嘗試使用findOne(),它會只返回,具有對鍵「foo」的值「欄中的」文件頭文件,但有3

module.exports = function(app, db) { 

app.get('/foo', (req, res)=>{ 

db.collection('barCollection').find({foo: {$all: ['bar']}} 
,(err, item)=>{ 
if (err) { 
      res.send({'error':'An error has occurred'}); 
     } else { 
      res.send(item); 
     } 
    }); 
}); 
}; 

感謝

回答

1

Paul是對的,你的代碼中存在一些問題,這就是爲什麼它返回null。

這裏試試這個片段。我正在使用2個文件進行演示。

model.js

const mongoose = require('mongoose'); 

mongoose.connect('mongo_url'); 
var barSchema = new mongoose.Schema({ 
    // your schema 
}); 

module.exports = mongoose.model('Bar', barSchema); 

main.js

var BarCollection = require('./models'); // assuming both files are in same directory. 

BarCollection.find({foo: {$all: ['bar']}} 
,(err, item)=>{ 
if (err) { 
      res.send({'error':'An error has occurred'}); 
     } else { 
      res.send(item); 
     } 
    }); 
}); 
}; 

基本上,我想這裏是:在不同的文件

  1. 單獨MongoDB的型號代碼
  2. 在刪除操作的API文件中導入mongo集合
+1

推薦Mongoose的好處。這是Mongo的最佳途徑,imo – Paul

+1

讓它工作! – rudster

+0

很高興:) –

0

db.collection('barCollection')由於某種原因返回null。你需要弄清楚爲什麼,這可能是你代碼中的其他地方,因爲你沒有安裝邏輯。

我想看看MongoDB的是否正確連接(即是你傳遞實際連接到數據庫功能的數據庫實例),是MongoDB的運行,你可以用它配置端口等

+0

我的意思是findOne()的作品不應該意味着我已正確連接?謝謝 – rudster

+0

它應該,但是那個代碼中的其他東西是不同的。該錯誤告訴你,DB.collection('barCollection')的返回值是未定義的。這意味着你正試圖調用null.find(),當然這是不可能的 – Paul

+0

現在我得到了一個不同的錯誤「TypeError:將圓形結構轉換爲JSON」我認爲這是一個進步,因爲它連接但無法顯示 – rudster