最近嘗試了一下Node的代碼,過程中用到了數據庫,現在總結一下並分享出來。
對於Mongodb的安裝,大家可以參考下這篇博客,保證良心,對了,是windows系統的。
對於Node層次的代碼,使用的KOA框架,參考的廖雪峯大神的示例,很贊。
1. 安裝,這裏用到的管理工具是yarn.
yarn install
2.連接數據庫
const mongoose = require('mongoose');
try{
mongoose.connect('mongodb://localhost/test',{
useMongoClient:true
})
}catch(error){
console.log(err)
}
mongoose.connection.once("open",function(){
console.log('數據庫連接成功');
}).on('error',function(err){
throw err
})
這裏做一下解釋,test是本地創建的一個數據庫,連接之後可以直接進行操作,未成功連接則直接拋出錯誤。
使用useMongoClient:true 可以避免Mongoose報出警告,還有一些其他的選項可以自己添加,可以參考這裏。
3.創建數據庫表並連接
首先新建一個在最外層結構新建一個models文件夾,然後文件夾中新建login.js文件。
module.exports = function (mongoose) {
var schema = mongoose.Schema({
userName: {
type: String, //指定字段類型
required:true, //判斷數據是否必須(如果存在一條數據)
unique:true //是否爲不可重複
},
pass:{
type:String
}
});
return mongoose.model('User', schema); //第一個變量是數據庫表名,第二個是使用的模板
}
對於上面的type,required等約束字符,想實現更多複雜功能可以瞭解這裏。
然後在文件夾中新建index.js文件。
module.exports = function (instance) {
return {
User: require('./login')(instance)
}
}
按照規律可以新建更多的模型文件,統一通過index.js導出
最後,要在app中把導出的model添加到ctx上。
mongoose.connection
.once("open",function(){
console.log('mongoose connection')
const models = require('./models')(mongoose) //引入模型
app.use(async (ctx,next) => {
ctx.models = models; //將模型的信息放到ctx中。
await next();
})
})
.on('error',function(error){
throw error
})
這樣之後就可以在項目中通過ctx直接調用數據庫的訪問操作了。
4.訪問網絡進行數據庫操作
在一個負責處理signin的controller裏面(不清楚的可以參照上述廖雪峯的網站),其實只要是個可以處理post請求的原生操作也可以,這裏不細說。
'POST /zhuce': async (ctx, next) => {
var userName = ctx.request.body.userName || ''; //獲取post的參數
var pass = ctx.request.body.pass || '';
console.log(ctx.request)
var user = new ctx.models.User({ //根據scheme生成對象
userName:userName,
pass:pass
})
user.save((err,rst) => { //調用mongoose方法實現保存操作。
if (err) { //打印錯誤信息
console.log("Error:" + err);
}
else {
console.log("Res:" + rst);
}
})
},
由於是後臺的處理操作,所以這裏就不涉及前端知識了,直接用Postman來測試。我使用的端口爲8080.
這樣就可以註冊成功了,由於名字設定的是unique,所以注意名字不要重複。
5.驗證操作是否成功
這裏有一點要注意一下,我們給數據庫起得名字叫做User,但是數據庫中生成的數據庫名稱爲users,這應該是mongoose幫忙轉換的。
以上就是這篇博客的所有內容了,有疑問歡迎交流。