首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在arangojs中获取查询数据

如何在arangojs中获取查询数据
EN

Stack Overflow用户
提问于 2021-04-30 00:08:49
回答 2查看 80关注 0票数 0

你好,我正在使用arangojs,创建了一个数据库,将数据添加到集合beusers中。

现在我想读取添加的数据。在ArangoDB中,我可以使用以下查询来执行此操作

代码语言:javascript
复制
FOR user IN beusers
FILTER user.password == '3670747394' && user.email == '3817128089'
RETURN user

正在做什么

代码语言:javascript
复制
const user = await usedDB.parse(aql`
        FOR user IN ${usersCol.name}
        FILTER user.password == ${hashedPassword} && user.email == ${hashedEmail}
        RETURN user
`)
console.log(user)

在arangojs中我得到了

代码语言:javascript
复制
{
  error: false,
  code: 200,
  parsed: true,
  collections: [],
  bindVars: [ 'value2', 'value0', 'value1' ],
  ast: [ { type: 'root', subNodes: [Array] } ]
}

readme中的示例对我的帮助仅此而已。

我遗漏了什么?如何读取数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-16 16:34:46

您希望使用Database.query()获取游标(ArrayCursor),然后希望在游标的结果列表中返回该值(例如,使用ArrayCursor.all())。

因此,代码将如下所示:

代码语言:javascript
复制
const cursor = await usedDB.query(aql`
  FOR user IN ${usersCol.name}
    FILTER user.password == ${hashedPassword} && user.email == ${hashedEmail}
    RETURN user
`);
console.log(await cursor.all()); // returns array of users
票数 1
EN

Stack Overflow用户

发布于 2021-05-01 02:12:10

看起来我只是用了错误的方法。正确的答案应该是:

代码语言:javascript
复制
const user = await db.executeTransaction(
    {
      read: ['beusers'],
    },
    `
      function() {
        // This code will be executed inside ArangoDB!
        const { query } = require("@arangodb");
        return query\`
            FOR user IN ${col.name}
            FILTER user.password == "${stringHash(
              passedUser.password,
            )}" && user.email == "${stringHash(passedUser.email)}"
            RETURN user
          \`.toArray()[0];
      }
    `,
  )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67321154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档