这节主要讲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
)的两种方法的实现,大家若有其他的方法欢迎在下面分享哦👇👇👇 !