1. 程式人生 > >mongoose查詢mongodb資料庫(三)

mongoose查詢mongodb資料庫(三)

Model.findOne()和findById():

注意返回的是一個物件,而不是陣列。

Model.find():

返回所有查詢結果,結果是一個數組,陣列的元素是物件。即使只有一個物件,也要用陣列表示。記住,是陣列。

這個bug找了好長時間。難受。

附一個例項:

var mongoose = require('./yangDemo/node_modules/mongoose');
//連線資料庫
mongoose.connect("mongodb://localhost/yang",{
    useMongoClient: true,
    /* other options */
});
//獲得連線物件,進行監聽
var connection = mongoose.connection; connection.on('error', function (err) { console.error(err); }); connection.on('open', function () { console.log('opened'); }); //schema var UserSchema = new mongoose.Schema({ userName: String, password: String }); //model var UserModel = mongoose.model
('yj', UserSchema); //注意此外的集合名稱是'yj',但資料庫中對應的集合名稱是'yjs'。 //如果資料庫中對應的集合yj,而不是集合yjs,則無法找到資料。所以一定要注意集合的名稱。儘量不要通過命令列手動新增集合。 var yj = { userName: 'yj', password: '123' } UserModel.create(yj, function (err, data ) { if(err){ console.error(err); }else { console.log(data); } })
//封裝函式 //要在回撥函式中傳入一個函式callback,這樣根據callback就能判斷非同步的回撥函式是否已經執行。 function getUser(userName, callback) { //找個一個符合條件的元素 UserModel.findOne({userName: userName}, function (err, doc) { if(err){ console.error(err);//錯誤也要返回 callback(err); }else { console.log(doc); callback(null, doc);//需要把null傳給callback中的,這樣不用返回error } }); } //暴露 exports.getUser = getUser;