使用arangodb和nodejs进行简单查询

时间:2017-11-15 15:15:43

标签: node.js arangodb arangojs

我想在我的数据库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中?

感谢您的回答。

2 个答案:

答案 0 :(得分:1)

// 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()

答案 1 :(得分:0)

由于异步请求,console.log(passworddb)行在//key => passworddb = key发生之前执行。因此,当您尝试记录密码时,db响应尚未到达。密码在passworddb中正确保存,你只需要控制台.log。你可以做到

key => {
  passworddb = key;
  console.log(passworddb);
}

确认作业有效。