這節主要講Node.js
利用arangojs
操作 ArangoDB
(也就是實現CRUD
)的兩種方法,方法不唯一哦。方法一在上節ArangoDB(七)中有提到過。
方法一
-
✅C
-
🍐 routes(
user.js
)router.post('/addUser',async (req, res)=> { let dataParam = { "name": req.body.name, "age": req.body.age }; let result =await service.addUser(dataParam); //在service中執行addUser() return res.json(result); });
-
🥑service(
user.js
)module.exports = { // 增加數據 async addUser(dataParam) { let data = await collection.save(dataParam); let doc = await collection.document(data); return doc; } }
補充內容:
collection.document()
-
語法:
async collection.document(documentHandle, [opts]): Document
-
Arguments
-
documentHandle:
string
可以是集合中文檔的_id或_key,也可以是文檔(即具有_id或_key屬性的對象)。
-
opts:
Object (optional)
如果設置了opts,則它必須是具有以下任何屬性的對象:
-
graceful:
boolean
(Default: false)如果設置爲true,則該方法將返回null,如果文檔不存在,則不會引發錯誤。(❓❓❓)
-
allowDirtyRead:
boolean
(Default: false)
-
-
-
-
🔍R
- collection.all()
-
語法:
async collection.all([opts]): Cursor
執行查詢以獲取集合中的所有文檔。返回查詢結果的新Cursor實例。
-
Arguments
- opts:
Object (optional)
- opts:
-
🌰
-
🍐 routes(user.js)
router.get('/getUser', async (req, res) => { let list = await service.getAllUsers(); return res.json(list); });
-
🥑services(user.js)
// 獲取數據 async getAllUsers() { let value = await collection.all(); return value._result; }
-
效果圖
-
-
- collection.all()
-
✍️U
- collection.update()
-
語法:
async collection.update(documentHandle, newValue, [opts]): Object
使用給定的documentHandle和給定的newValue更新(合併)文檔的內容,並返回一個包含文檔元數據的對象。
-
Arguments
-
documentHandle:
string
可以是集合中文檔的_id或_key,也可以是文檔(即具有_id或_key屬性的對象)。
-
newValue:
Object
文檔的新數據
-
opts:
Object (optional)
-
-
🌰
-
🍐 routes(user.js)
router.post('/updateUser',async (req, res)=> { let dataParam = {_key,name,age}=req.body; let result =await service.updateUsers(dataParam); return res.json(result); });
-
🥑services(user.js)
// 修改數據 async updateUsers(param){ let dataUpdate=await collection.update(param._key,param); let data=await collection.document(dataUpdate); return data; }
-
效果圖
-
-
- collection.update()
-
❎D
- collection.remove()
-
語法:
async collection.remove(documentHandle, [opts]): Object
-
Arguments
-
documentHandle:
string
可以是集合中文檔的_id或_key,也可以是文檔(即具有_id或_key屬性的對象)
-
opts:
Object (optional)
-
-
🌰
-
🍐 routes(user.js)
router.delete('/removeUser',async (req, res)=> { let _key=req.body._key; let result =await service.removeUsers(_key); return res.json(result); });
-
🥑services(user.js)
// 刪除數據 async removeUsers(param){ let dataRemove=await collection.remove(param); return dataRemove; }
-
效果圖
-
-
- collection.remove()
方法二
方法二中routes文件夾中的內容與方法一中的一樣,主要區別在於services文件夾中的內容,一起來看看吧 🙈🙈🙈
-
✅C
增加數據同上👆👆👆
-
🔍R
-
查詢所有數據
-
🍐 routes(user.js)
router.get('/getUser',async function(req, res) { let list=await service.getAllUsers(); return res.json(list); });
-
🥑 services(user.js)
async getAllUsers (){ let result=await myDB.query('FOR u IN users RETURN u'); return result._result; },
-
-
按條件查詢(_key)
-
🍐 routes(user.js)
router.get('/getUserByKey',async function(req, res) { let keyParam=req.query._key; let list=await service.getUsersByKey(keyParam); return res.json(list); });
-
🥑 services(user.js)
async getUsersByKey(param){ let bindVars={'_key':param}; //此行很重要 let result =await myDB.query('FOR u IN users FILTER u._key == @_key RETURN u',bindVars); return result._result; },
注意
:上面bindVars
的定義很重要。 -
-
-
✍️U
根據_key來修改。
-
🍐 routes(user.js)
router.post('/updateUser',async (req, res)=> { let dataParam = {_key,name,age}=req.body; let result =await service.updateUsers(dataParam); return res.json(result); });
-
🥑 services(user.js)
async updateUsers(param){ let bindVars={'_key':param._key,'name':param.name,'age':param.age}; let result =await myDB.query('FOR u IN users FILTER u._key == @_key UPDATE u WITH { name:@name, age:@age } IN users RETURN NEW',bindVars); return result._result; },
注意
:想要返回修改後的結果加上RETURN NEW
。-
效果圖
注意
get
的傳參位置 😄😄😄
-
-
❎D
-
🍐 routes(user.js)
router.delete('/removeUser',async (req, res)=> { let _key=req.body._key; let result =await service.removeUsers(_key); return res.json(result); });
-
🥑 services(user.js)
async removeUsers(param){ let bindVars={'_key':param}; let result =await myDB.query('FOR u IN users FILTER u._key == @_key REMOVE u IN users', bindVars); return result._result; }
-
好啦,以上就是Node.js
利用arangojs
操作 ArangoDB
(也就是實現CRUD
)的兩種方法的實現,大家若有其他的方法歡迎在下面分享哦👇👇👇 !