javascript - 表已添加到 MYSQL,但在发布时返回 500

标签 javascript mysql node.js express knex.js

我正在使用 Node 模块 KNEX 进行 MYSQL 调用。我希望用户能够添加自己的自定义表格。我可以向 MYSQL 添加包含所有列的数据库,但在我的控制台中出现 500 内部服务器错误。

这是我的自定义文件 knex.js,它访问 MYSQL 数据库:

knex.js

var knex = require('knex')({
    client: 'mysql',
    connection: {
        host: 'localhost',
        user: USER,
        password: PASSWORD,
        database: 'tasks'
    }
});

exports.createUserTable = function(x){
    console.log(x);
    knex.schema.hasTable(x.id).then(function(exists) {
        if (!exists) {
            return knex.schema.createTable(x.id, function(t){
                t.increments();
                t.string(x.type, 50);
                for (var y in x.val){
                    t.string(x.val[y], 255);
                }
                t.timestamps();
            });
        } else {
            return console.log("Error!");
        }
    });     
};

正如我之前提到的,数据库被创建,所以这个函数似乎工作正常。接下来的代码接收来自 angular.js 的 post 请求。数据被编译成一个名为 table 的变量,并且 table 被发送到 knex.createUserTable()。但是,控制台中没有显示任何值,并且返回了 500 错误:

tables.js

router.route('/addTable')
    .post(function(req, res){

    //code above omitted
        var knx = knex.createUserTable(table);

        knx.then(function(c) {
            console.log(c);
        }).catch(function(err){
            console.log("Error: " + err);
        }).done(function(){
            console.log("Mission accomplished!");
            res.status(200).end();      
        });
    });

最佳答案

我找到了答案。最外层的函数也应该返回。

   return knex.schema.hasTable(x.id).then(function(exists) {
       if (!exists) {
            return knex.schema.createTable(x.id, function(t){
                t.increments();
                t.string(x.type, 50);
                for (var y in x.val){
                    t.string(x.val[y], 255);
                }
                t.timestamps();
            });
        } else {
            return console.log("Error!");
        }
    });     

关于javascript - 表已添加到 MYSQL,但在发布时返回 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33360032/

相关文章:

javascript - 为 ng-repeat 中的每个元素设置不同的样式

javascript - 类型 'Document' 缺少类型中的以下属性

php - 计算 phpmyadmin 4 中的表 - 配置文件

php - 如何使用 backbone.js 和 php 将数据保存到 mysql 数据库中

javascript - 将数据从网络发送到本地服务器

javascript - 如何获取两个 anchor 标签之间的文本内容

javascript - 不变违规文本字符串必须在 <Text> 组件内呈现

mysql - 如何合并同一个表中的每 2 个连续列

node.js - 我可以在 Nodejs 中编写真正的异步回调吗?

javascript - 使用 Node 和 ejs 时调用外部 api 端点并获取用户的详细信息