Простой запрос с arangodb и 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) возвращает значение "неопределенное", а после console.log ("ключ:", ключ) возвращает правильный ключ... Дважды.

Мой вопрос: как я могу получить только пароль в arangodb (что такое запрос для однократного запроса) и как сохранить значение в моей переменной?

Спасибо за ответ.

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

Линия console.log(passworddb) исполняется раньше //key => passworddb = key происходит из-за асинхронного запроса. Таким образом, к тому времени, когда вы попытаетесь записать пароль, ответ db еще не пришел. Пароль корректно сохраняется в passworddb, вы просто просто console.log. Вы могли бы сделать

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

подтвердить, что назначение работает.

Другие вопросы по тегам