Javascript 我的dc.js图形未显示在我的flask应用程序和mongodb上

Javascript 我的dc.js图形未显示在我的flask应用程序和mongodb上,javascript,mongodb,flask,d3.js,dc.js,Javascript,Mongodb,Flask,D3.js,Dc.js,我使用以下函数从MongoDB中的集合返回对象数组: ``` @app.route('/data') def data(): FIELDS = {'_id': False, 'book_title': True, 'review_rating': True} projects = mongo.db.reviews.find({}, FIELDS) json_projects

我使用以下函数从MongoDB中的集合返回对象数组:

```
        @app.route('/data')
        def data():
            FIELDS = {'_id': False, 'book_title': True, 'review_rating': True}
        
            projects = mongo.db.reviews.find({}, FIELDS)
            json_projects = []
            for project in projects:
                json_projects.append(project)
            json_projects = json.dumps(json_projects, default=json_util.default)
            return json_projects
    
    ```
当我启动服务器时,我可以看到数据已正确加载(这是从GoogleDeveloper工具的控制台)

(3)[{…},{…},{…}]
0:{书名:《因诺琴蒂的卫报》,评论评级:3}
1:{书名:《魔戒》,评论评分:3}
2:{书名:“藐视法庭的时间”,评论评分:4}
长度:3
然后,我开始使用以下代码在graph.js中创建图形:
```    
队列()
.defer(d3.json,“/data”)
.wait(makeGraphs);
函数生成图(错误,projectsJson){
var ndx=交叉滤波器(projectsJson);
显示标题的评分(ndx);
dc.renderAll();
}
功能显示标题的分级(ndx){
var dim=ndx.维度(dc.Pull(“书名”);
var group=dim.group();
dc.条形图(“#账面评级”)
.宽度(400)
.高度(300)
.margins({顶部:10,右侧:50,底部:30,左侧:50})
.尺寸(dim)
.集团(集团)
.过渡期(500)
.x(d3.scale.ordinal())
.xUnits(dc.units.序数)
.弹性(真实)
.xAxisLabel(“书名”)
}
d3.json('/data')。然后(data=>{
console.log(数据)
})
```
这是HTML:
```    
布克兰
```

图形未加载,控制台上未显示任何错误。经过数小时的研究,我无法理解为什么,请帮我一把。

您的代码混合使用了d3@3及d3@5+,这可能是你问题的根源

D3@5从回调变为承诺

你的期末考试

d3.json('/data').then(data => {
    console.log(data)
})
将与d3@5+,我假设您看到的是返回的正确数据

另一方面,使用
queue()
的代码和图表初始化代码都是为使用而编写的d3@3(及dc@2)

不幸的是,如果您尝试使用d3@5使用
queue()。正如您在评论中所说,您没有看到错误,但我怀疑这段代码根本没有被命中

我建议删除
queue()
代码,并使用基于工作承诺的
d3.json
代码

在这一点上,您仍然需要升级D3和dc.js代码,但这并不难,主要是将
D3.scale.linear
重命名为
D3.scaleLinear
,与ordinal相同


您的代码混合使用d3@3及d3@5+,这可能是你问题的根源

D3@5从回调变为承诺

你的期末考试

d3.json('/data').then(data => {
    console.log(data)
})
将与d3@5+,我假设您看到的是返回的正确数据

另一方面,使用
queue()
的代码和图表初始化代码都是为使用而编写的d3@3(及dc@2)

不幸的是,如果您尝试使用d3@5使用
queue()。正如您在评论中所说,您没有看到错误,但我怀疑这段代码根本没有被命中

我建议删除
queue()
代码,并使用基于工作承诺的
d3.json
代码

在这一点上,您仍然需要升级D3和dc.js代码,但这并不难,主要是将
D3.scale.linear
重命名为
D3.scaleLinear
,与ordinal相同


您是否尝试了
错误
参数到
生成图形
的错误处理?嗨,是的,我尝试了,但是控制台没有返回任何错误您尝试了
错误
参数到
生成图形
的错误处理吗?嗨,是的,但是控制台没有返回任何错误谢谢您,它工作了这么多!我取消了队列代码,更新了dc和d3,我得到了一张图表!非常感谢你,它成功了!我取消了队列代码,更新了dc和d3,我得到了一张图表!