第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關(guān)于NodeJs為什么要用mongoose操作mongodb?

關(guān)于NodeJs為什么要用mongoose操作mongodb?

SMILET 2019-02-07 21:07:57
關(guān)于NodeJs為什么要用mongoose操作mongodb
查看完整描述

2 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗 獲得超3個贊

很多nodejs的新手都是直接用mongodb本身直接操作數(shù)據(jù)庫,我之前也是如此

不知道大家有沒有遇到過這個錯誤:
Error: db object already connecting, open cannot be called multiple times

也許你會說是異步寫得不好,但是就算異步寫得再好,也逃避不了這個錯誤
因為無論如何,都要用到db.open();這東西,而且訪問完畢還得db.close();

于是就有一個問題:刷新得太快,或者多個用戶同時訪問數(shù)據(jù)庫,數(shù)據(jù)庫沒來得及關(guān)閉,那個Error就會出現(xiàn)

可以做一下實驗,在訪問數(shù)據(jù)庫的頁面按住F5,就會很容易看到在頁面上或者控制臺上拋出的Error勒

用mongoose就不會出現(xiàn)這錯誤勒,因為一旦連接好數(shù)據(jù)庫,db就會處于open狀態(tài),不存在訪問時要打開,然后又要關(guān)閉的規(guī)則,然后我果斷把所有mongodb部分改為mongoose,按住F5毫無壓力啊,而且尼瑪代碼又短了一大截!

前后代碼對比一下:

之前每次操作要open:

User.get = function get(username, callback) {
mongodb.open(function(err, db) {
if (err) {
return callback(err);
}
//讀取 users 集合
db.collection('users', function(err, collection) {
if (err) {
mongodb.close();
return callback(err);
}
//查找 name 屬性為 username 的文檔
collection.findOne({name: username}, function(err, doc) {
mongodb.close();
if (doc) callback (err, doc);
else callback (err, null);
});
});
});
};
現(xiàn)在,建立好mongoose對象模型后只需幾行代碼即可實現(xiàn)相同的功能:

User.get = function get(username, callback) {
users.findOne({name:username}, function(err, doc){
if (err) {
return callback(err, null);
}
return callback(err, doc);
});
};


查看完整回答
反對 回復(fù) 2019-03-01
?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗 獲得超4個贊

node.js操作mongodb提供了多種驅(qū)動,包含mongoose,mongoskin,node-mongodb-native(官方)等。
mongoose官網(wǎng)上作者的解釋:
Let's face it, writing MongoDB validation, casting and business logic boilerplate is a drag. That's why we wrote Mongoose.
Mongoose provides a straight-forward, schema-based solution to model your application data. It includes built-in type casting, validation, query building, business logic hooks and more, out of the box.
Mongoose庫簡而言之就是在node環(huán)境中操作MongoDB數(shù)據(jù)庫的一種便捷的封裝,一種對象模型工具,類似ORM,Mongoose將數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)換為JavaScript對象以供你在應(yīng)用中使用



查看完整回答
反對 回復(fù) 2019-03-01
  • 2 回答
  • 0 關(guān)注
  • 2043 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號