Anychart.js 动态显示数据
Anychart.js Display data dynamically
我正在尝试使用 Anychart v8 和 Angular CLI v10.0.4 使用从数据库中获取的数据绘制时间线图表
我看到这个 topic,这与我这里的问题非常相似。我按照步骤操作,但看不到数据。我收到此错误:错误:属性 d:预期数字,“M NaN 56.5 L NaN 5 ...”。
我试着硬编码数据,然后它工作得很好,所以我不知道出了什么问题。
以下是我如何使用 Sequelize 获取数据:
exports.getAllStoryArcs = (req, res, next) => {
StoryArc.findAll({
include: [StoryArc.startChapter, StoryArc.endChapter],
order: [['startChapter', 'number', 'ASC']]
})
.then((storyArcs) => {
res.status(200).json(storyArcs);
})
.catch((err) => {
console.log(err);
res.status(400).json({
error: err
})
});
};
编辑:这是使用 Sequelize 从 MySQL 数据库获取的数据示例:
[
Story Arc {
dataValues: {
id: 6,
name: "Introduction",
synopsis: "synopsis text",
delailedSummary: "detailedSummary text",
createdAt: 2020-08-22T16:41:21.000Z,
updatedAt: 2020-08-22T16:41:21.000Z,
startChapterId: 1,
endChapterId: 8,
startChapter: {
id: 1,
number: 1,
title: "title text",
synopsis: "synopsis text"
},
endChapter: {
id: 8,
number: 8,
title: "title text",
synopsis: "synopsys text"
}
}
}
]
这是我的数据转换函数 (data.service.ts) :
<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre><code>import { Injectable } from '@angular/core';
import { StoryArcService } from './story-arc.service';
import { StoryArcDTO } from '../models/story-arc-dto.model';
const BASE_YEAR: number = 2000;
const START_MONTH: number = 0;
const END_MONTH: number = 11;
const START_DAY: number = 1;
const END_DAY: number = 31;
@Injectable({
providedIn: 'root'
})
/**
* Service class to manage the timeline chart's data.
*/
export class DataService {
// Array of arcs
private _arcs: Array<StoryArcDTO>;
// The arcs mapped to be use in the timeline chart
private _arcsMap: Array<Object> = [];
// The set to use in the chart
private _arcsSet: anychart.data.Set;
constructor(private arcService: StoryArcService) {
this.setArcData();
}
private setArcData() {
// Fill the array of story arcs
this.arcService.getAllArcs().subscribe(
gottenArcs => {
if (gottenArcs) {
this._arcs = gottenArcs;
// Fill the anychart data set
this._arcs.forEach((arc) => {
// Map the arc data set
this._arcsMap.push({
name: arc.name,
start: Date.UTC(BASE_YEAR + arc.startChapter.number, START_MONTH, START_DAY),
end: Date.UTC(BASE_YEAR + arc.endChapter.number, END_MONTH, END_DAY),
startNb: arc.startChapter.number,
endNb: arc.endChapter.number
});
});
}
}
);
}
public get arcsMap() : Object[] {
return this._arcsMap;
}
}
我正在尝试使用 Anychart v8 和 Angular CLI v10.0.4 使用从数据库中获取的数据绘制时间线图表 我看到这个 topic,这与我这里的问题非常相似。我按照步骤操作,但看不到数据。我收到此错误:错误:属性 d:预期数字,“M NaN 56.5 L NaN 5 ...”。 我试着硬编码数据,然后它工作得很好,所以我不知道出了什么问题。
以下是我如何使用 Sequelize 获取数据:
exports.getAllStoryArcs = (req, res, next) => {
StoryArc.findAll({
include: [StoryArc.startChapter, StoryArc.endChapter],
order: [['startChapter', 'number', 'ASC']]
})
.then((storyArcs) => {
res.status(200).json(storyArcs);
})
.catch((err) => {
console.log(err);
res.status(400).json({
error: err
})
});
};
编辑:这是使用 Sequelize 从 MySQL 数据库获取的数据示例:
[
Story Arc {
dataValues: {
id: 6,
name: "Introduction",
synopsis: "synopsis text",
delailedSummary: "detailedSummary text",
createdAt: 2020-08-22T16:41:21.000Z,
updatedAt: 2020-08-22T16:41:21.000Z,
startChapterId: 1,
endChapterId: 8,
startChapter: {
id: 1,
number: 1,
title: "title text",
synopsis: "synopsis text"
},
endChapter: {
id: 8,
number: 8,
title: "title text",
synopsis: "synopsys text"
}
}
}
]
这是我的数据转换函数 (data.service.ts) :
<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre><code>import { Injectable } from '@angular/core';
import { StoryArcService } from './story-arc.service';
import { StoryArcDTO } from '../models/story-arc-dto.model';
const BASE_YEAR: number = 2000;
const START_MONTH: number = 0;
const END_MONTH: number = 11;
const START_DAY: number = 1;
const END_DAY: number = 31;
@Injectable({
providedIn: 'root'
})
/**
* Service class to manage the timeline chart's data.
*/
export class DataService {
// Array of arcs
private _arcs: Array<StoryArcDTO>;
// The arcs mapped to be use in the timeline chart
private _arcsMap: Array<Object> = [];
// The set to use in the chart
private _arcsSet: anychart.data.Set;
constructor(private arcService: StoryArcService) {
this.setArcData();
}
private setArcData() {
// Fill the array of story arcs
this.arcService.getAllArcs().subscribe(
gottenArcs => {
if (gottenArcs) {
this._arcs = gottenArcs;
// Fill the anychart data set
this._arcs.forEach((arc) => {
// Map the arc data set
this._arcsMap.push({
name: arc.name,
start: Date.UTC(BASE_YEAR + arc.startChapter.number, START_MONTH, START_DAY),
end: Date.UTC(BASE_YEAR + arc.endChapter.number, END_MONTH, END_DAY),
startNb: arc.startChapter.number,
endNb: arc.endChapter.number
});
});
}
}
);
}
public get arcsMap() : Object[] {
return this._arcsMap;
}
}