为 json 对象的属性名称创建模型
Create a model for the names of the properties of a json Object
我下载了一个 json 文件并想将其导入到 mongodb,但在将其导入数据库之前,我想在 node.js 中编写代码以重组 json 对象并向每个对象添加一些附加信息。
每个对象的结构如下所示:
{
"fid": "52955",
"geometry": {
"type": "LineString",
"coordinates": [
[
-76.9812226935329,
38.9032437788008
],
[
-76.9811595039813,
38.9033432081856
]
]
},
"signs": [
{
"MANUAL_SEGID": null,
"OBJECTID": "125463",
"GLOBALID": "{0F7DB59B-948D-42DB-90EF-3F17D391B8BB}",
"SIGNARROWDIRECTION": "2",
"MUTCD": "R-DC-Loading_Zone_With_ParkMobile_Zone",
"intervalInfo": [
{
"RESTRICTIONSTATUS": "3",
"OBJECTID": "41460"
}
]
},
{
"MANUAL_SEGID": null,
"OBJECTID": "125465",
"GLOBALID": "{079902E8-D9B0-462B-9323-1550B4FE7197}",
"SIGNARROWDIRECTION": "2",
"MUTCD": "R-DC-2HR",
"intervalInfo": [
{
"RESTRICTIONSTATUS": "1",
"OBJECTID": "41462"
}
]
}
]
}
我为 json 属性创建模型或架构的目的是,如果稍后更改了一些名称,我可以轻松地直接在模型中应用更改,而不是在我的 javascript 代码中.
如果有人给我提示,那就太好了。
谢谢
我的部分代码:
const filesArray = [ "permitZone.geojson"]; //Array of files in manual folder
const dataInfo = {
description: 'Zone',
data: [
{
url: 'https://opendata.arcgis.com/datasets/fcfbf29074e549d8aff9b9c708179291_1.geojson',
type: 'permitZone.geojson'
}
]
};
function dataReader() {
var allResult = [];
var arrayFilePromises = filesArray.map(function (fileName, index) {
return downloadFile(dataInfo.data[index].url, dataDownloadPath, fileName)
.then((fileRes) => {
fileRes.features.forEach(function (val) {
// Here i need to read each object and apply some changes
});
})
})
return Promise.all([Promise.all(arrayFilePromises)])
.then(() => {
return allResult
})
}
嘿,我可以用下面的 类 写一个 objectModel.js,但我仍然很困惑如何为数组使用构造函数。在我的例子中 this.signs?因为val.signs是一个符号数组。
class Sign {
constructor(signData) {
this.objectId = signData.OBJECTID;
this.global = signData.GLOBALID;
this.manualSegId = signData.MANUAL_SEGID;
this.signarrowDirection = signData.SIGNARROWDIRECTION;
}
}
class MyCity {
constructor(val) {
this.fid = val.fid;
this.lineId = val.lineId;
this.segId = val.segId;
this.geometry = val.geometry;
this.signs = new Sign(val.signs);
}
}
module.exports = {
MyCity: MyCity
}
我终于解决了,通过 signs 数组的迭代应该是这样的:
class Sign {
constructor(signData) {
this.objectId = signData.OBJECTID;
this.global = signData.GLOBALID;
this.manualSegId = signData.MANUAL_SEGID;
this.signarrowDirection = signData.SIGNARROWDIRECTION;
}
}
class MyCity {
constructor(val) {
this.fid = val.fid;
this.lineId = val.lineId;
this.segId = val.segId;
this.geometry = val.geometry;
this.signs = val.signs.map(signData => new Sign(signData))
}
}
module.exports = {
MyCity: MyCity
}
我下载了一个 json 文件并想将其导入到 mongodb,但在将其导入数据库之前,我想在 node.js 中编写代码以重组 json 对象并向每个对象添加一些附加信息。 每个对象的结构如下所示:
{
"fid": "52955",
"geometry": {
"type": "LineString",
"coordinates": [
[
-76.9812226935329,
38.9032437788008
],
[
-76.9811595039813,
38.9033432081856
]
]
},
"signs": [
{
"MANUAL_SEGID": null,
"OBJECTID": "125463",
"GLOBALID": "{0F7DB59B-948D-42DB-90EF-3F17D391B8BB}",
"SIGNARROWDIRECTION": "2",
"MUTCD": "R-DC-Loading_Zone_With_ParkMobile_Zone",
"intervalInfo": [
{
"RESTRICTIONSTATUS": "3",
"OBJECTID": "41460"
}
]
},
{
"MANUAL_SEGID": null,
"OBJECTID": "125465",
"GLOBALID": "{079902E8-D9B0-462B-9323-1550B4FE7197}",
"SIGNARROWDIRECTION": "2",
"MUTCD": "R-DC-2HR",
"intervalInfo": [
{
"RESTRICTIONSTATUS": "1",
"OBJECTID": "41462"
}
]
}
]
}
我为 json 属性创建模型或架构的目的是,如果稍后更改了一些名称,我可以轻松地直接在模型中应用更改,而不是在我的 javascript 代码中. 如果有人给我提示,那就太好了。 谢谢
我的部分代码:
const filesArray = [ "permitZone.geojson"]; //Array of files in manual folder
const dataInfo = {
description: 'Zone',
data: [
{
url: 'https://opendata.arcgis.com/datasets/fcfbf29074e549d8aff9b9c708179291_1.geojson',
type: 'permitZone.geojson'
}
]
};
function dataReader() {
var allResult = [];
var arrayFilePromises = filesArray.map(function (fileName, index) {
return downloadFile(dataInfo.data[index].url, dataDownloadPath, fileName)
.then((fileRes) => {
fileRes.features.forEach(function (val) {
// Here i need to read each object and apply some changes
});
})
})
return Promise.all([Promise.all(arrayFilePromises)])
.then(() => {
return allResult
})
}
嘿,我可以用下面的 类 写一个 objectModel.js,但我仍然很困惑如何为数组使用构造函数。在我的例子中 this.signs?因为val.signs是一个符号数组。
class Sign {
constructor(signData) {
this.objectId = signData.OBJECTID;
this.global = signData.GLOBALID;
this.manualSegId = signData.MANUAL_SEGID;
this.signarrowDirection = signData.SIGNARROWDIRECTION;
}
}
class MyCity {
constructor(val) {
this.fid = val.fid;
this.lineId = val.lineId;
this.segId = val.segId;
this.geometry = val.geometry;
this.signs = new Sign(val.signs);
}
}
module.exports = {
MyCity: MyCity
}
我终于解决了,通过 signs 数组的迭代应该是这样的:
class Sign {
constructor(signData) {
this.objectId = signData.OBJECTID;
this.global = signData.GLOBALID;
this.manualSegId = signData.MANUAL_SEGID;
this.signarrowDirection = signData.SIGNARROWDIRECTION;
}
}
class MyCity {
constructor(val) {
this.fid = val.fid;
this.lineId = val.lineId;
this.segId = val.segId;
this.geometry = val.geometry;
this.signs = val.signs.map(signData => new Sign(signData))
}
}
module.exports = {
MyCity: MyCity
}