1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- const { CloudQuery, CloudObject } = require("../lib/ncloud");
- const { UserInfoList, ItemInfoList, UserPreferList } = require("./data");
- // 测试CRUD
- //testQuery();
- async function testQuery() {
- let query = new CloudQuery("UserInfo");
- query.equalTo("name", "湖南渣渣辉2");
- let userInfoList = await query.find();
- console.log("userInfoList", userInfoList);
- }
- async function main() {
- // 基本的增删改查
- let query = new CloudQuery("UserInfo");
- let userInfoList = await query.find();
- console.log("userInfoList count", userInfoList?.length)
- let newUserInfo = new CloudObject("UserInfo");
- newUserInfo.set({ "name": "Squirral" });
- newUserInfo = await newUserInfo.save(newUserInfo);
- console.log("newUserInfo added", newUserInfo);
- newUserInfo.set({ "name": "Squirral2" });
- newUserInfo = await newUserInfo.save(newUserInfo);
- console.log("newUserInfo updated", newUserInfo);
- await newUserInfo.destory();
- console.log("newUserInfo deleted", newUserInfo);
- }
- //main()
- DataMap = {
- UserInfo: {},
- UserPrefer: {},
- ItemInfo: {}
- }
- importUserAndPrefer();
- async function importUserAndPrefer() {
- //导入用户数据
- let userInfoList = UserInfoList
- for (let index = 0; index < userInfoList.length; index++) {
- let userInfo = userInfoList[index];
- userInfo = await importObject("UserInfo", userInfo, "UserID");
- }
- //导入物品数据
- let itemInfoList = ItemInfoList
- for (let index = 0; index < itemInfoList.length; index++) {
- let itemInfo = itemInfoList[index];
- itemInfo = await importObject("ItemInfo", itemInfo,"ItemID");
- }
- //导入偏好数据
- let userPreferList = UserPreferList
- for (let index = 0; index < userPreferList.length; index++) {
- let userPrefer = userPreferList[index];
- userPrefer = await importObject("UserPrefer", userPrefer,"PreferID");
- }
- console.log(DataMap);
- }
- async function importObject(className, data, keyID) {
- // 查重:判断导入的数据的data.keyID字段值是否能在数据库对应的keyID字段中查到对应的记录
- // srcId为导入的表的主键字段值
- let query = new CloudQuery(className);
- let keyValue = data[keyID];
- let srcId = keyValue;
- query.equalTo(keyID,srcId)
- let importObj = await query.first()
- console.log(importObj)
- // 导入
- // 导入前批量处理Pointer类型数据,进行重定向
- Object.keys(data).forEach(key => {
- let field = data[key];
- if (field && typeof field === 'object' && field.__type === 'Pointer') {
- // 如果字段是Pointer类型,则进行重定向处理
- if (DataMap && DataMap[field.className] && DataMap[field.className][field.objectId]) {
- data[key] = DataMap[field.className][field.objectId].toPointer();
- }
- }
- });
- // 若未添加,则创建新对象并保存
- if(!importObj?.id){
- importObj = new CloudObject(className)
- }
- // 保存或更新data数据,让data中的keyID字段等于srcId的值
- data[keyID] = srcId;
- importObj.set(data);
- importObj = await importObj.save();
- DataMap[className][srcId] = importObj
- }
|