-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
182 lines (148 loc) · 6.23 KB
/
index.js
File metadata and controls
182 lines (148 loc) · 6.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
const cloudbase = require("@cloudbase/js-sdk");
const adapter = require("@cloudbase/adapter-node");
// 生成 Node.js 适配器
// const { sessionStorage } = adapter.genAdapter();
// 使用 Node.js 适配器
cloudbase.useAdapters(adapter);
// 初始化 CloudBase 应用
const app = cloudbase.init({
env: "cloudbase-test-v1-8e8tzqa7290d87",
});
const main = async (event, context) => {
try {
console.log("=== CloudBase 功能验证开始 ===");
// 1. 测试身份验证
console.log("\n1. 测试身份验证...");
// const auth = app.auth({
// sessionStorage,
// });
const auth = app.auth();
console.log("尝试匿名登录...");
await auth.signInAnonymously();
// 等待登录状态稳定
const user = await auth.getLoginState();
console.log("✅ 匿名登录成功");
console.log("用户 UID:", user.user.uid);
console.log("用户类型:", user.user.name === 'anonymous' ? "匿名用户" : "正式用户");
// 2. 测试数据库功能
console.log("\n2. 测试数据库功能...");
const db = app.database();
// 创建测试集合
const testCollection = db.collection('test_collection');
// 插入测试数据
console.log("插入测试数据...");
const insertResult = await testCollection.add({
name: "Node.js 测试",
timestamp: new Date().toISOString(),
userUid: user.user.uid,
});
console.log("✅ 数据插入成功,文档 ID:", insertResult.id);
// 查询数据
console.log("查询测试数据...");
const queryResult = await testCollection
.where({
userUid: user.user.uid
})
.orderBy('timestamp', 'desc')
.limit(5)
.get();
console.log("✅ 数据查询成功,找到", queryResult.data.length, "条记录");
console.log("最新记录:", queryResult.data[0]);
// 3. 测试云存储功能
console.log("\n3. 测试云存储功能...");
console.log("\n使用 app.uploadFile 方式上传...");
const fileName = `test-files/app-upload-${Date.now()}.jpg`;
const fs = require('fs');
const path = require('path');
const testFilePath = '/Users/nenneyu/Pictures/fig1.jpg'; // 替换为你的本地文件路径
// 读取文件内容
const fileBuffer = fs.readFileSync(testFilePath);
const uploadResult = await app.uploadFile({
cloudPath: fileName,
filePath: fileBuffer, // 使用文件内容
onUploadProgress: function (progressEvent) {
console.log("上传进度:", progressEvent);
var percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);
console.log(`上传进度: ${percentCompleted}%`);
}
});
// console.log("✅ 文件上传成功");
console.log("文件 ID:", uploadResult.fileID);
// 修复:获取文件下载链接
const downloadUrlResult = await app.getTempFileURL({
fileList: [uploadResult.fileID]
});
console.log("✅ 获取下载链接成功");
console.log("下载链接:", downloadUrlResult.fileList[0].tempFileURL);
// 4. 测试云函数调用
console.log("\n4. 测试云函数调用...");
try {
// 调用 hello 云函数
const funcResult = await app.callFunction({
name: 'hello',
data: {
name: "来自本地 Node.js 的调用",
}
});
console.log("✅ 云函数调用成功");
console.log("函数返回结果:", funcResult.result.message);
} catch (funcError) {
console.log("⚠️ 云函数调用失败:", funcError.message);
}
// 5. 清理测试数据
console.log("\n5. 清理测试数据...");
try {
// 删除刚才插入的测试文档
await testCollection.doc(insertResult.id).remove();
console.log("✅ 测试数据清理成功");
// 删除上传的测试文件
await app.deleteFile({
fileList: [uploadResult.fileID]
});
console.log("✅ 测试文件清理成功");
} catch (cleanError) {
console.log("⚠️ 清理数据时出现问题:", cleanError.message);
}
console.log("\n=== CloudBase 功能验证完成 ===");
return {
success: true,
message: "CloudBase JS SDK 在 Node.js 环境中运行正常",
results: {
auth: "✅ 身份验证正常",
database: "✅ 数据库操作正常",
storage: "✅ 云存储操作正常",
functions: "✅ 云函数调用正常",
user: {
uid: user.user.uid,
isAnonymous: user.user.name === 'anonymous',
}
}
};
} catch (error) {
console.error("\n❌ 运行出错:", error.message);
console.error("错误详情:", error);
return {
success: false,
error: error.message,
stack: error.stack
};
}
}
// 如果直接运行这个文件,执行 main 函数
if (require.main === module) {
console.log("🚀 开始验证 CloudBase JS SDK 在 Node.js 环境中的功能...");
console.log("环境 ID:", "cloudbase-test-v1-8e8tzqa7290d87");
console.log("Node.js 版本:", process.version);
console.log("运行时间:", new Date().toISOString());
main({}, {})
.then(result => {
console.log("\n📋 最终运行结果:");
console.log(JSON.stringify(result, null, 2));
process.exit(result.success ? 0 : 1);
})
.catch(error => {
console.error("\n💥 未捕获的错误:", error);
process.exit(1);
});
}
exports.main = main;