123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- /**
- * 数据初始化脚本
- * 可以在云开发控制台中运行该脚本来初始化数据
- */
- // 海龟汤题目数据
- const turtleSoupRiddles = [
- {
- title: '奇怪的旅馆',
- description: '一位旅行者来到一家偏远的旅馆住宿。当天晚上,他躺在床上准备入睡时,突然发现枕头下面有一张纸条,上面写着:"请立即离开这里!"。旅行者看了纸条后,立刻收拾行李,连夜离开了旅馆。第二天,旅馆被大火烧毁。',
- answer: '这位旅行者是这家旅馆的老板。他在检查房间时,发现了一位前任房客留下的警告纸条。意识到可能有危险,他立刻撤离。果然第二天旅馆因电路故障发生火灾。',
- difficulty: 'medium',
- tips: [
- '纸条可能不是写给这位旅行者的',
- '旅行者对旅馆很熟悉',
- '思考旅行者与旅馆的关系'
- ]
- },
- {
- title: '回家的路',
- description: '一个男人开车外出,天色已晚,突然下起了大雨。他在一个十字路口停下来,看到一位老人、一位妇女和一位年轻女子在等车。老人看起来病得很重需要去医院,妇女是他的前女友,年轻女子看起来是他的理想型。由于他的车只能再搭载一人,他最后选择载了老人去医院,并把车钥匙给了前女友让她开车送年轻女子回家,自己则淋着雨步行回家了。',
- answer: '这个男人是一位出租车司机。他载老人去医院是工作需要,把车交给前女友是因为她也是出租车司机,能够接替他的班次送年轻女子回家并继续工作。',
- difficulty: 'hard',
- tips: [
- '思考为什么他会把车钥匙给前女友',
- '为什么他会选择送老人而不是其他人',
- '男人的职业是什么'
- ]
- },
- {
- title: '沙漠中的点',
- description: '一个人独自在沙漠中行走,身后留下了一串脚印。突然,他停下脚步,向后看了看,然后继续前进。奇怪的是,从他停下的地方开始,沙漠上只剩下一个个点,而不是完整的脚印。',
- answer: '这个人原本是倒着走的,留下了正常的脚印。当他停下来向后看时,其实是在朝前方观望,然后决定改为正向行走。由于沙漠很热,他只能用脚尖快速触地前进,因此只留下了点状痕迹。',
- difficulty: 'medium',
- tips: [
- '注意脚印的方向问题',
- '思考人如何在沙漠中行走才会留下点状痕迹',
- '人的行走方向可能发生了变化'
- ]
- },
- {
- title: '最后的晚餐',
- description: '一名囚犯被判处死刑,行刑前一天,狱警按照惯例问他想吃什么作为最后的晚餐。囚犯要求吃一个苹果。狱警给了他一个苹果,囚犯吃完后很快就死亡了,而行刑日期还没到。',
- answer: '这个囚犯有严重的过敏症,他过敏的食物就是苹果。他故意要求吃苹果作为最后的晚餐,以便在正式行刑前自行了断生命。狱警并不知道他对苹果过敏。',
- difficulty: 'easy',
- tips: [
- '囚犯死亡的原因与苹果有关',
- '苹果本身可能没有问题',
- '考虑囚犯的身体状况'
- ]
- },
- {
- title: '独自一人的晚餐',
- description: '一位女士独自一人在餐厅吃晚餐。服务员上了一道她点的鱼。她吃了一口后,起身去了洗手间,回来后看了看盘子,就直接离开了餐厅,再也没有回来。',
- answer: '这位女士是餐厅的食品评论家或卫生检查员。她尝了一口鱼后,去洗手间吐了出来,因为鱼已经不新鲜了。回来确认后,她决定离开并给餐厅一个不及格的评分。',
- difficulty: 'medium',
- tips: [
- '女士的身份很特殊',
- '她为什么要尝一口就离开',
- '考虑食物的质量问题'
- ]
- },
- {
- title: '电梯之谜',
- description: '一个住在高层公寓的男人,每天上班时乘电梯下楼,总是直达一层。但回家时,如果电梯里有其他人,或者天气在下雨,他会直接乘电梯到自己的楼层;否则,他会乘电梯到10楼,然后走楼梯上楼。',
- answer: '这个男人身材矮小,够不着高层的电梯按钮。下楼时,他可以按到1楼的按钮。上楼时,如果有人在电梯里,他可以请别人帮忙按他的楼层;如果下雨天,他会带伞,可以用伞尖按到高层按钮;其他情况下,他只能按到自己够得着的最高楼层(10楼),然后走楼梯。',
- difficulty: 'hard',
- tips: [
- '男人有什么身体特征限制?',
- '为什么下楼时总能到一层?',
- '下雨天有什么特别之处?'
- ]
- },
- {
- title: '湖边的脚印',
- description: '湖边发现了一具尸体,周围只有死者自己的脚印,从湖边一直延伸到湖水中。警方调查后确认这是一起谋杀案,而非自杀或意外。',
- answer: '凶手是冬天在湖面结冰时将被害人杀害的,然后把尸体放在冰面上。等到春天冰融化后,尸体落入湖中,随后被冲到岸边。被害人生前在湖边留下的脚印仍然可见,看起来好像是他自己走入湖中的。',
- difficulty: 'medium',
- tips: [
- '考虑季节变化的影响',
- '尸体是如何到达湖边的?',
- '脚印是什么时候留下的?'
- ]
- },
- {
- title: '桥上的遭遇',
- description: '两人同时从一座独木桥的两端上桥。独木桥很窄,一次只能通过一人。然而奇怪的是,两人却都顺利通过了独木桥,没有一个人掉下去或退回。',
- answer: '两人是在独木桥的中间相遇的。当他们相遇时,一人蹲下,另一人跨过他的背,然后两人继续各自的方向前进,成功通过了独木桥。',
- difficulty: 'easy',
- tips: [
- '思考两人如何能在狭窄的桥上错过对方',
- '不一定需要退回',
- '人体可以做出各种动作'
- ]
- },
- {
- title: '寂静的房间',
- description: '一个密闭的房间里,地上躺着一个人,旁边有一摊水和一些碎玻璃。没有窗户,门是锁着的,房间里没有其他人。',
- answer: '地上的人是一条金鱼。它原本生活在一个玻璃鱼缸里,但鱼缸不知何故破碎了,金鱼因缺水而死亡。',
- difficulty: 'easy',
- tips: [
- '"人"不一定是指人类',
- '思考水和碎玻璃的来源',
- '考虑各种可能生活在玻璃容器中的生物'
- ]
- },
- {
- title: '雪地里的足迹',
- description: '一个积雪的花园里发现了一串足迹,足迹从花园门口一直延伸到花园中央,然后突然消失了。花园周围是平整的雪地,没有任何其他足迹或痕迹。',
- answer: '这串足迹是倒着印上去的。有人故意穿着鞋子倒着走,从花园中央走到了门口。因此看起来好像有人从门口走到中央然后突然消失了。',
- difficulty: 'medium',
- tips: [
- '足迹的方向可能具有欺骗性',
- '思考如何制造"消失"的假象',
- '考虑反向思维'
- ]
- }
- ];
- // 初始化函数
- async function initData() {
- // 获取数据库引用
- const db = wx.cloud.database();
- const riddleCollection = db.collection('turtle_soup_riddles');
-
- try {
- // 先检查集合是否存在,如不存在则创建
- try {
- await riddleCollection.count();
- } catch (e) {
- console.log('集合不存在,将创建集合');
- await db.createCollection('turtle_soup_riddles');
- }
-
- // 检查是否已有数据
- const countResult = await riddleCollection.count();
- if (countResult.total > 0) {
- console.log('已有题目数据,跳过初始化');
- return;
- }
-
- // 批量添加题目数据
- const batchTasks = [];
- for (const riddle of turtleSoupRiddles) {
- batchTasks.push(riddleCollection.add({
- data: {
- ...riddle,
- createdAt: db.serverDate()
- }
- }));
- }
-
- await Promise.all(batchTasks);
- console.log('成功初始化海龟汤题目数据,共添加题目:', turtleSoupRiddles.length);
- } catch (error) {
- console.error('数据初始化失败:', error);
- }
- }
- // 执行初始化
- initData().then(() => {
- console.log('数据初始化脚本执行完毕');
- });
|