initData.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /**
  2. * 数据初始化脚本
  3. * 可以在云开发控制台中运行该脚本来初始化数据
  4. */
  5. // 海龟汤题目数据
  6. const turtleSoupRiddles = [
  7. {
  8. title: '奇怪的旅馆',
  9. description: '一位旅行者来到一家偏远的旅馆住宿。当天晚上,他躺在床上准备入睡时,突然发现枕头下面有一张纸条,上面写着:"请立即离开这里!"。旅行者看了纸条后,立刻收拾行李,连夜离开了旅馆。第二天,旅馆被大火烧毁。',
  10. answer: '这位旅行者是这家旅馆的老板。他在检查房间时,发现了一位前任房客留下的警告纸条。意识到可能有危险,他立刻撤离。果然第二天旅馆因电路故障发生火灾。',
  11. difficulty: 'medium',
  12. tips: [
  13. '纸条可能不是写给这位旅行者的',
  14. '旅行者对旅馆很熟悉',
  15. '思考旅行者与旅馆的关系'
  16. ]
  17. },
  18. {
  19. title: '回家的路',
  20. description: '一个男人开车外出,天色已晚,突然下起了大雨。他在一个十字路口停下来,看到一位老人、一位妇女和一位年轻女子在等车。老人看起来病得很重需要去医院,妇女是他的前女友,年轻女子看起来是他的理想型。由于他的车只能再搭载一人,他最后选择载了老人去医院,并把车钥匙给了前女友让她开车送年轻女子回家,自己则淋着雨步行回家了。',
  21. answer: '这个男人是一位出租车司机。他载老人去医院是工作需要,把车交给前女友是因为她也是出租车司机,能够接替他的班次送年轻女子回家并继续工作。',
  22. difficulty: 'hard',
  23. tips: [
  24. '思考为什么他会把车钥匙给前女友',
  25. '为什么他会选择送老人而不是其他人',
  26. '男人的职业是什么'
  27. ]
  28. },
  29. {
  30. title: '沙漠中的点',
  31. description: '一个人独自在沙漠中行走,身后留下了一串脚印。突然,他停下脚步,向后看了看,然后继续前进。奇怪的是,从他停下的地方开始,沙漠上只剩下一个个点,而不是完整的脚印。',
  32. answer: '这个人原本是倒着走的,留下了正常的脚印。当他停下来向后看时,其实是在朝前方观望,然后决定改为正向行走。由于沙漠很热,他只能用脚尖快速触地前进,因此只留下了点状痕迹。',
  33. difficulty: 'medium',
  34. tips: [
  35. '注意脚印的方向问题',
  36. '思考人如何在沙漠中行走才会留下点状痕迹',
  37. '人的行走方向可能发生了变化'
  38. ]
  39. },
  40. {
  41. title: '最后的晚餐',
  42. description: '一名囚犯被判处死刑,行刑前一天,狱警按照惯例问他想吃什么作为最后的晚餐。囚犯要求吃一个苹果。狱警给了他一个苹果,囚犯吃完后很快就死亡了,而行刑日期还没到。',
  43. answer: '这个囚犯有严重的过敏症,他过敏的食物就是苹果。他故意要求吃苹果作为最后的晚餐,以便在正式行刑前自行了断生命。狱警并不知道他对苹果过敏。',
  44. difficulty: 'easy',
  45. tips: [
  46. '囚犯死亡的原因与苹果有关',
  47. '苹果本身可能没有问题',
  48. '考虑囚犯的身体状况'
  49. ]
  50. },
  51. {
  52. title: '独自一人的晚餐',
  53. description: '一位女士独自一人在餐厅吃晚餐。服务员上了一道她点的鱼。她吃了一口后,起身去了洗手间,回来后看了看盘子,就直接离开了餐厅,再也没有回来。',
  54. answer: '这位女士是餐厅的食品评论家或卫生检查员。她尝了一口鱼后,去洗手间吐了出来,因为鱼已经不新鲜了。回来确认后,她决定离开并给餐厅一个不及格的评分。',
  55. difficulty: 'medium',
  56. tips: [
  57. '女士的身份很特殊',
  58. '她为什么要尝一口就离开',
  59. '考虑食物的质量问题'
  60. ]
  61. },
  62. {
  63. title: '电梯之谜',
  64. description: '一个住在高层公寓的男人,每天上班时乘电梯下楼,总是直达一层。但回家时,如果电梯里有其他人,或者天气在下雨,他会直接乘电梯到自己的楼层;否则,他会乘电梯到10楼,然后走楼梯上楼。',
  65. answer: '这个男人身材矮小,够不着高层的电梯按钮。下楼时,他可以按到1楼的按钮。上楼时,如果有人在电梯里,他可以请别人帮忙按他的楼层;如果下雨天,他会带伞,可以用伞尖按到高层按钮;其他情况下,他只能按到自己够得着的最高楼层(10楼),然后走楼梯。',
  66. difficulty: 'hard',
  67. tips: [
  68. '男人有什么身体特征限制?',
  69. '为什么下楼时总能到一层?',
  70. '下雨天有什么特别之处?'
  71. ]
  72. },
  73. {
  74. title: '湖边的脚印',
  75. description: '湖边发现了一具尸体,周围只有死者自己的脚印,从湖边一直延伸到湖水中。警方调查后确认这是一起谋杀案,而非自杀或意外。',
  76. answer: '凶手是冬天在湖面结冰时将被害人杀害的,然后把尸体放在冰面上。等到春天冰融化后,尸体落入湖中,随后被冲到岸边。被害人生前在湖边留下的脚印仍然可见,看起来好像是他自己走入湖中的。',
  77. difficulty: 'medium',
  78. tips: [
  79. '考虑季节变化的影响',
  80. '尸体是如何到达湖边的?',
  81. '脚印是什么时候留下的?'
  82. ]
  83. },
  84. {
  85. title: '桥上的遭遇',
  86. description: '两人同时从一座独木桥的两端上桥。独木桥很窄,一次只能通过一人。然而奇怪的是,两人却都顺利通过了独木桥,没有一个人掉下去或退回。',
  87. answer: '两人是在独木桥的中间相遇的。当他们相遇时,一人蹲下,另一人跨过他的背,然后两人继续各自的方向前进,成功通过了独木桥。',
  88. difficulty: 'easy',
  89. tips: [
  90. '思考两人如何能在狭窄的桥上错过对方',
  91. '不一定需要退回',
  92. '人体可以做出各种动作'
  93. ]
  94. },
  95. {
  96. title: '寂静的房间',
  97. description: '一个密闭的房间里,地上躺着一个人,旁边有一摊水和一些碎玻璃。没有窗户,门是锁着的,房间里没有其他人。',
  98. answer: '地上的人是一条金鱼。它原本生活在一个玻璃鱼缸里,但鱼缸不知何故破碎了,金鱼因缺水而死亡。',
  99. difficulty: 'easy',
  100. tips: [
  101. '"人"不一定是指人类',
  102. '思考水和碎玻璃的来源',
  103. '考虑各种可能生活在玻璃容器中的生物'
  104. ]
  105. },
  106. {
  107. title: '雪地里的足迹',
  108. description: '一个积雪的花园里发现了一串足迹,足迹从花园门口一直延伸到花园中央,然后突然消失了。花园周围是平整的雪地,没有任何其他足迹或痕迹。',
  109. answer: '这串足迹是倒着印上去的。有人故意穿着鞋子倒着走,从花园中央走到了门口。因此看起来好像有人从门口走到中央然后突然消失了。',
  110. difficulty: 'medium',
  111. tips: [
  112. '足迹的方向可能具有欺骗性',
  113. '思考如何制造"消失"的假象',
  114. '考虑反向思维'
  115. ]
  116. }
  117. ];
  118. // 初始化函数
  119. async function initData() {
  120. // 获取数据库引用
  121. const db = wx.cloud.database();
  122. const riddleCollection = db.collection('turtle_soup_riddles');
  123. try {
  124. // 先检查集合是否存在,如不存在则创建
  125. try {
  126. await riddleCollection.count();
  127. } catch (e) {
  128. console.log('集合不存在,将创建集合');
  129. await db.createCollection('turtle_soup_riddles');
  130. }
  131. // 检查是否已有数据
  132. const countResult = await riddleCollection.count();
  133. if (countResult.total > 0) {
  134. console.log('已有题目数据,跳过初始化');
  135. return;
  136. }
  137. // 批量添加题目数据
  138. const batchTasks = [];
  139. for (const riddle of turtleSoupRiddles) {
  140. batchTasks.push(riddleCollection.add({
  141. data: {
  142. ...riddle,
  143. createdAt: db.serverDate()
  144. }
  145. }));
  146. }
  147. await Promise.all(batchTasks);
  148. console.log('成功初始化海龟汤题目数据,共添加题目:', turtleSoupRiddles.length);
  149. } catch (error) {
  150. console.error('数据初始化失败:', error);
  151. }
  152. }
  153. // 执行初始化
  154. initData().then(() => {
  155. console.log('数据初始化脚本执行完毕');
  156. });