如何在 Parse Platform NodeJS 中保存千数据

How to save thousand data in Parse Platform NodeJS

我是解析平台的新手,我正在尝试将 81000 行数据插入到解析数据库中,这里是代码

        const uri = "/the.json"
        const res = await axios.get(uri)
        const dataresult = Object.keys(res.data)

        if (dataresult.length > 0) {
            res.data.forEach(function (datakp) {
                var kp = new Parse.Object("theClass");
                kp.save(datakp)
                    .then((res) => {
                        console.log('oke ' + res.id)
                    }),
                    (error) => {
                        console.log('err : '+ error.message)
                    }
            })
         }

控制台日志没有错误,Parse DB中没有保存数据,但是如果我只插入1000行,它会保存到数据库中。

EG:

            if (dataresult.length > 0) {
            res.data.forEach(function (datakp, index) {
                if (index < 1000) {
                 var kp = new Parse.Object("theClass");
                 kp.save(datakp)
                    .then((res) => {
                        console.log('oke ' + res.id)
                    }),
                    (error) => {
                        console.log('err : '+ error.message)
                    }
                })
               }
           }

谢谢

更新

我根据@davi-macêdo 的回答解决了这个问题 这里有一个完整的代码

    const uri = "/the.json"
    const res = await axios.get(uri)
    const dataresult = Object.keys(res.data)
    const objs = [];
    const theKP = Parse.Object.extend("theClass")
    if (dataresult.length > 0) {
        res.data.forEach(function (datakp) {
            var thekp = new theKP()
            thekp.set(datakp)
            objs.push(thekp);
        })
     }

    Parse.Object.saveAll(objs)
                .then((res) => {
                    console.log('oke updated ' + dataresult.length)
                }),
                (error) => {
                    console.log('err : '+ error.message)
                }

您可能达到了速率限制,我无法想象一次保存 81,000 条记录对于许多应用程序来说是正常行为。

我查看了文档,找不到任何可能提到保存限制的内容,但是发送 1000 个请求会触发大多数速率限制保护

最有效的方法是使用 Parse.Object.saveAll 函数。像这样:

        const uri = "/the.json"
        const res = await axios.get(uri)
        const dataresult = Object.keys(res.data)
        const objs = [];

        if (dataresult.length > 0) {
            res.data.forEach(function (datakp) {
                objs.push(new Parse.Object("theClass", datakp));
            })
         }

        Parse.Object.saveAll(objs)
                    .then((res) => {
                        console.log('oke ' + res.id)
                    }),
                    (error) => {
                        console.log('err : '+ error.message)
                    }

无论如何,由于您没有错误并且当前没有数据正在保存,您可能会遇到一些内存限制。所以这也是你需要注意的事情。