首页 > 解决方案 > 将分区键和分区键值发布到邮递员时自动将分区键和值添加到 JSON 文件

问题描述

所以我有很多记录(大约 1000 条)要插入到 cosmos DB 中。分区键附加到它们。有什么方法可以使用该.forEach(...)方法附加分区键吗?在这种情况下,分区键名称是firstname.

在 Postman 中发布时,我们可以将分区键和值添加到每条记录吗?

在将每个记录存储到 cosmos db 之前,我可以使用什么代码.forEach来附加到每个记录吗?firstname

我将如何修改insertCustomer代码以实现结果?

预期输出:

{
    "shipment": [
        {
            "firstname": "abc",
            "id": "12345",
            "age": 23
        },
        {  
            "firstname": "bca",
            "id": "321",
            "age": 22
        }
    ]
}

目前我拥有的数据是这样的:

{
    "shipment": [
        {
            "id": "12345",
            "age" :23
        },
        {  
            "id" : "321",
            "age" : 22
        }
    ]
}

应用程序.js

var Connection = require('tedious').Connection;
const express = require('express');
const router = express.Router();
const bodyParser = require('body-parser');

const employee = require('./router');
var app = express();

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(employee);


//CORS Middleware
app.use(function (req, res, next) {
    //Enabling CORS
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, contentType,Content-Type, Accept, Authorization");
    next();
});


var ser = app.listen(3000, function () {
    console.log('Server is running on port 3000..');
});

控制器.js

const config = require("./config");
const CosmosClient = require("@azure/cosmos").CosmosClient;

const { endpoint, key, databaseId, containerId } = config;

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
const client = new CosmosClient({ endpoint, key });

const database = client.database(databaseId);
const container = database.container(containerId);

class MainController {
    async fetchCustomers (req,res) {
        // <CreateClientObjectDatabaseContainer>
        const {endpoint, key, databaseId, containerId} = config;
        const client = new CosmosClient({endpoint, key});
        const database = client.database(databaseId);
        const container = database.container(containerId);


        try {
            // <QueryItems>
            console.log(`Querying container: Items`);
            const queryIterator = container.items.query(
            // query to return all items
                {
                    query: ' SELECT * from c '
                },

            { enableScanInQuery: true }
        );
            const { resources: items, requestCharge } = await queryIterator.fetchNext();
            const itemDef = items[0];
            console.log("Item '" + itemDef.id + "' found, request charge: " + requestCharge);
            res.json({resources: items, requestCharge});
        } catch (err) {
            console.log(err.message);
        }
    }
    async insertCustomer(req , res){
        var params  = req.body;
        const { resource: createdItem } = await container.items.create(params);

        console.log(`\r\nCreated new item: ${createdItem.id} - ${createdItem.pk}\r\n`);
        res.json({ resource: createdItem })

    }
}

const controller = new MainController();
module.exports = controller;

路由器.js

const express =  require('express');
const controller = require("./controller");
const router = express.Router();

router.get('/api/fetchCustomers', controller.fetchCustomers);
router.post('/api/insertCustomer' , controller.insertCustomer);

module.exports = router;

标签: node.jsjsonazure-cosmosdb

解决方案


推荐阅读