如何将来自JavaScript对象的MongoDB响应数组转换为JSON字符串

8
我编写了一个JavaScript API,可以在请求时从MongoDB数据库中返回所有数据。然而,它会将数据作为对象数组发送,我想获得简单的JSON字符串。返回对象的语句如下:
return db.collection('variants').find().toArray();

我需要添加另一个函数来转换为JSON字符串吗?但是我认为这只适用于单个对象,而不适用于我的情况下的对象数组。

var fetch = require('graphql-fetch');
const API_URL = `http://localhost:4000/graphql`
const query = `
{
  variants{
    VARIANT_ID
    CHROM
  }
}
`
fetch(API_URL)(query).then(data => console.log(data))

enter image description here


这不是JSON,而是BSON。因为你正在使用JavaScript,所以它是一个JavaScript对象。当然,你需要解析它。 - Neil Lunn
在客户端还是服务器端? - Dr. Mian
如果您的服务器程序连接到MongoDB,则可以使用res.json()(如果使用Express)。另外,如果是Node.js,则.toArray()需要回调或Promise解析。 - Neil Lunn
我正在使用Express并设置GraphQL API。在GraphiQL窗口中,API响应良好,但是当我尝试从客户端获取时,出现了错误。让我添加获取代码。可能这样更有意义,但理想情况下,我希望在服务器上执行它,以便客户端不必经过它。 - Dr. Mian
只需将对象转换为字符串即可... - Andrew Li
3个回答

4

好的,我找到了解决方法。我需要的只是JSON.stringify(data)

var fetch = require('graphql-fetch');
const API_URL = `http://localhost:4000/graphql`
const query = `
{
  variants{
    VARIANT_ID
    CHROM
  }
}
`
fetch(API_URL)(query).then(data => console.log(JSON.stringify(data)))

有时候...最简单的答案就是你已经知道的那个 ;) - Daksh

0
以下代码片段将正常工作。
fetch('/users.json')
.then(function(response) {
    return response.json()
}).then(function(json) {
    console.log('parsed json', json)
}).catch(function(ex) {
    console.log('parsing failed', ex)
})

-3

你可以使用mongoexport命令。

为了执行此操作,你需要对数据库具有读取权限。

例如:mongoexport --db 数据库名 [--collection traffic] --out 输出文件名.json


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接