如何将数据分离到不同的数据库中?

Posted

技术标签:

【中文标题】如何将数据分离到不同的数据库中?【英文标题】:How to separate data into different databases? 【发布时间】:2021-12-23 19:16:22 【问题描述】:

我有一个数据库,我想在其中添加和存储有关特定目的地或活动的信息。在插入信息页面中,我有一个部分,用户可以在其中选择目标或活动作为其类别。但是,所有这些都存储在一个数据库中,但我希望每个数据库都有不同的。

这是将它们添加到一个数据库中的当前代码:

  void addDestOrAct(String name, String details, var category) 
    String key = destdatabaseref
        .child('Database')
        .child('DestinationsandActivities')
        .push()
        .key;
    destdatabaseref
        .child('Database')
        .child('DestinationsandActivities')
        .child(name)
        .set(
      'id': key,
      'name': name,
      'description': details,
      'category': category
    );
    nameController.clear();
    descriptionController.clear();

    Fluttertoast.showToast(
        timeInSecForiosWeb: 4,
        gravity: ToastGravity.CENTER,
        msg: "It has been added!");

    Navigator.pop(context);
  

我想输入 if (category = 'Activity') 之类的内容,然后添加到 destdatabaseref.child('Database').child('Activities') 而不是 .child('DestinationsandActivities')

类别选择和插入数据代码:

                Padding(
                  padding: const EdgeInsets.only(right: 290),
                  child: Text(
                    'Category :',
                    style: TextStyle(fontSize: 15, color: Colors.grey),
                  ),
                ),
                SizedBox(height: 13),
                Container(
                  height: 40,
                  child: ListView(
                    scrollDirection: Axis.horizontal,
                    children: [
                      _categoryType('Destination'),
                      SizedBox(width: 10),
                      _categoryType('Activity'),
                    ],
                  ),
                ),
                SizedBox(height: 40),
                ElevatedButton(
                    style: ElevatedButton.styleFrom(
                        primary: Color(0xFF3d5a89),
                        padding:
                            EdgeInsets.symmetric(horizontal: 45, vertical: 10),
                        textStyle: TextStyle(
                            fontWeight: FontWeight.w500,
                            color: Colors.white,
                            fontSize: 15)),
                    onPressed: () 
                      if (_formKey.currentState!.validate()) 
                        if (nameController.text.isNotEmpty &&
                            descriptionController.text.isNotEmpty) 
                          addDestOrAct(nameController.text,
                              descriptionController.text, _categorySelected);
                         else
                          return null;
                      
                    ,
                    child: Text('Add')
                    )

类别类型小部件代码:

Widget _categoryType(String title) 
    return InkWell(
      child: Container(
        height: 70,
        width: 120,
        decoration: BoxDecoration(
          color: _categorySelected == title
              ? Color(0xFF5a893d)
              : Color(0xFF3d5a89),
          borderRadius: BorderRadius.circular(15),
        ),
        child: Center(
          child: Text(
            title,
            style: TextStyle(fontSize: 13, color: Colors.white),
          ),
        ),
      ),
      onTap: () 
        setState(() 
          _categorySelected = title;
        );
      ,
    );
  

如何根据类别将信息添加到不同的数据库中?我现在有数据库'DestinationsandActivities',但我更希望它是'Destinations''Activities'

【问题讨论】:

"我想输入类似if (category = 'Activity') 的内容,然后添加到destdatabaseref.child('Database').child('Activities') 而不是.child('DestinationsandActivities')。"这听起来很合理。你在实现这个时遇到了什么问题? 我不知道该放什么样的条件! if 条件需要一个布尔值,那么我该如何正确编写 _categoryType('Activity') = true 呢?我确实写了,但我收到错误Missing selector such as '.identifier' or '[0]'. 你试过if (category == 'Activity')吗? 哇,谢谢。有效!这对我来说是一个愚蠢的忽视。 【参考方案1】:

感谢@Frank van Puffelen,这很简单:

    if (category == 'Activity') 
      //code here
      );
    

    if (category == 'Destination') 
      //code here
      );
    

【讨论】:

以上是关于如何将数据分离到不同的数据库中?的主要内容,如果未能解决你的问题,请参考以下文章

Django中MySQL读写分离技术

SQLServer之分离数据库

如何分离数据并将其注册到数据库中

Django中MySQL读写分离技术

如何将数据库处理和业务处理分离

Mycat 读写分离+分库分表