node.js - 将分区键和分区键值发布到邮递员时自动将分区键和值添加到 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.js - 使用node.js在sqlite3中一次插入多个依赖表
- python - 通过将每一列重复一定次数来创建数据框
- python - 比较两个数组时出错:DeprecationWarning: elementwise comparison failed; 这将在未来引发错误
- python - 如何在 Cloud Function (Python) 中初始化 Firebase Admin SDK
- r - R:尝试在 filter.data.frame 中使用零长度变量名
- c++ - C++ 有没有办法为同一个参数使用不同的类型来初始化一个类?
- python - 如何在 Python 和 BeautifulSoup 中过滤带有类的标签?
- react-native - 按下导航栏上的按钮时导航到其他 StackNavigator 屏幕
- excel - 如何在自定义excel日历中的特定日期和时间范围内获取特定活动
- c# - 需要从主 C# WPF 应用程序向 Process 对象发送 CTRL+C (SIGINT)