[英]Simple query with arangodb and nodejs
我想在我的数据库 arangodb 中使用 nodejs 为登录页面执行一个简单的查询。
var arango = require('arangojs');
/*---*/
Database = arango.Database;
db = new Database('http://127.0.0.1:8529');
db.useDatabase('MyDB');
db.useBasicAuth('root', 'root');
/*---*/
//Post Methods
var username;
var passworddb;
//Login method
app.post('/', function (request, response) {
username = request.body.user.name;
db.query('FOR u IN User FILTER u.firstname == "'+username+'" RETURN u.password').then(
cursor => cursor.all()
).then(
key => console.log('key:', key),
//key => passworddb = key,
err => console.error('Failed to execute query')
);
console.log(passworddb)
});
它正在工作,但我无法将密钥的结果保存在我的 var passworddb 中......我不明白......请求在 arangodb 中是异步的
Console.write(passworddb) 返回 "undefined" 并在 console.log('key:', key) 之后正确返回密钥......两次。
我的问题是:如何在 arangodb 中只获取密码(一次请求的查询是什么)以及如何将值存储在我的 var 中?
谢谢您的回答。
// required package for arango
const arangojs = require('arangojs');
//sample function
async function main(){
DB = new arangojs.Database({ url: <arango_url> });
DB.useDatabase(<arango_db_name>);
DB.useBasicAuth(<arango_db_username>, <arango_db_password>);
const data = await DB.query('RETURN LENGTH(<arango_collection_anme>)')
console.log("result", data._result)
}
main()
由于异步请求,在//key => passworddb = key
发生之前执行console.log(passworddb)
行。 因此,当您尝试记录密码时,数据库响应尚未到达。 密码已正确保存在 passworddb 中,您只是过早地使用了 console.log。 你可以做
key => {
passworddb = key;
console.log(passworddb);
}
以确认任务有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.