序列化:将多维数组写入数据库

时间:2018-07-24 11:51:56

标签: mysql json node.js sequelize.js

我有一个JSON文件,其中包含长度可变的嵌套数组。也就是说,每个对象的ARR都有不同数量的对象。

   {    "count": 200,
        "objects": [
            {
                "id": "FIRST",
                "b": "two",
                "c": "three",
                "ARR": [{
                    "aa": "onion ",
                    "bb": 2,
                    "cc": "peanuts"},
                    },
                    {
                    "aa": "Jam ",
                    "bb": 4,
                    "cc": "Bread"},
                    }],
                 "d":"four"
                ]
            }, . . . on and on

我已将JSON数据导入到我的JavaScript文件中:

 const data = JSON.parse(require('fs').readFileSync('./jsonfiles/objects.JSON', 'utf8'))

将数据向下修剪到感兴趣的对象

const objs=data.objects;

我正在使用Sequelize将其写入mysql数据库。我有两个模型:模型1:hasMany Arr集:模型2:belongsTo到Model1。

将Model1中的table1写成这样:

for (var key in Objs) {
var item = Objs[key]
db.Model1.create({
    modelID: item.id,
    modelB: item.b,
    modelC:item.c
 })
}

现在,我正在尝试将ARR写入关联的模型,并且对如何执行此操作感到困惑。

  • 我不知道每个ARR中将有多少个对象
  • 将ARR作为JSON obj存储在表1中以后将无法正常工作。

1 个答案:

答案 0 :(得分:0)

这是我为我们公司的API创建的函数。花了我一周时间整理一下,但希望能帮上忙。

exports.functionName = async (req, res) => {

    const params = req.params.something;

    
    if (!params) {
        res.status(httpStatusCodes.BAD_REQUEST).send({message:'Please provide params'});
        return;
    }

    const function =  inputs.map(prop => ({
        propOne: uniqueID,
        propTwo: prop.value,
    }));

    const value = await productInput.bulkCreate(function);

    if (!value || value.length < 1) {
        res.status(httpStatusCodes.INTERNAL_SERVER_ERROR).send({ message:'No inputs were updated for this product.' });
        return;
    }

    res.send(value);
    return;
};