我有一个现有的PHP / MySQL应用程序,我正尝试将其迁移到AngularJS / Firebase,以作为学习这些较新技术的一种方式。
该应用程序在MySQL中具有自己的表架构。一个这样的表如下所示:
CREATE TABLE `dictionary` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `word` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, `wordmeaning` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `wordlength` int(11) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我的问题是:如何将这个表结构及其中的数据从MySQL迁移到Firebase?
我尝试通过查询将数据导出到JSON字符串中,例如:
SELECT CONCAT("[", GROUP_CONCAT( CONCAT("{id:'",id,"',"), CONCAT("word:'",word,"',"), CONCAT("wordmeaning:'",wordmeaning,"',"), CONCAT("wordlength:'",wordlength,"'}") ) ,"]") AS json FROM dictionary;
这给出了有效的JSON字符串,例如:
[{id:'1',单词:'cat',单词含义:'哺乳动物物种',单词长度:'3'}, {id:“ 2”,单词:“ catapult”,单词含义:“ throwing device”,单词长度:“ 8”}, {id:“ 3”,单词:“ cart”,单词含义:“要携带东西的东西”,单词长:“ 4”}]
我将其保存在文件中,并尝试使用“导入JSON”按钮从Firebase导入文件,但出现以下错误:解析JSON数据时出错。请验证您的输入。(JSON字符串有效。我在http://jsonviewer.stack.hu/处进行了检查)
关于我可能做错了什么的任何想法?我假设Firebase可以处理此类结构及其中的数据。
谢谢。
您的JSON无效。将此更改为有效:
[{"id":"1","word":"cat","wordmeaning":"a mammal species","wordlength":"3"}, {"id":"2","word":"catapult","wordmeaning":"throwing device","wordlength":"8"}, {"id":"3","word":"cart","wordmeaning":"something to carry things in","wordlength":"4"}]
因此,这些是更改:
您可能要考虑不引用的值id和wordlength,因为这些特性似乎是数字。
id
wordlength
编辑
这两个在线工具似乎可以正确验证JSON(或至少符合Firebase的期望):
第二个也漂亮地打印了JSON,因此这可能是偏爱一个或另一个的原因。