【问题标题】:sails js / waterline / mysql table name and table prefixSails js / waterline / mysql 表名和表前缀
【发布时间】:2015-11-21 12:49:30
【问题描述】:

我是sails.js 的新手。我想从表中选择所有记录。如何使用 .find() 。

特别是 waterline 将如何知道我想要从哪个表中获取数据?因为我们没有在模型中提到任何表名。我知道有.query()。但这在水线基本创建/更新/查找/删除方法中是否可行?

另一个问题如何在sails.js 中使用表名前缀?就像我想使用sails_product 作为表名。

【问题讨论】:

  • 模型名应该有表名tableName属性,方便控制器使用不同的查询相关方法。

标签: javascript mysql sails.js waterline


【解决方案1】:

我是sails.js 的新手。我想从表中选择所有记录。如何使用 .find() 。

例如,如果您的模型名称是 Book,您将选择所有 Book 记录

Book.find()
    .exec(function(err, books) {
        if (err) return res.serverError();
        console.log(books); // 'books' is an array of the found records
    })

特别是 waterline 将如何知道我想要从哪个表中获取数据?因为我们没有在模型中提到任何表名。我知道有.query()。但这在水线基本创建/更新/查找/删除方法中是否可行?

是的,这是可能的。您不必使用水线处理表名等,您所需要的只是您的 模型名称。 创建、更新、删除所有工作的方式与上面的 find 示例相同 -所以ModelName.actionName()

另一个问题如何在sails.js 中使用表名前缀?就像我想使用sails_product 作为表名。

默认情况下,waterline 使用小写的模型名称作为对应的表名。但是,您可以在模型设置中覆盖它。例如,如果您将模型定义在名为 Book.js 的文件中,则其内容将如下所示:

module.exports = {

    attributes: {
        name: {
            type: 'String',
            required: true
        },
        price: {
            type: 'float'
        }
    },

    tableName: 'custom_book_table'

}

这样,在数据库中创建的实际表将被称为custom_book_table,而您在find 查询等中仍将您的模型称为Book

这里有指向 WaterlineSails 文档的链接,可以帮助您继续前进。在模型/查询相关的问题上,我肯定会先从 Waterline 文档中搜索。

【讨论】:

  • 对 Fissio 的帮助很大。非常感谢。 :)
  • @pritam,如果一个答案解决了您的问题,您应该考虑accepting it,这样给您最佳答案的用户将获得声誉积分,其他用户知道您找到了解决方案。 :)
  • 对不起Fissio。如何接受答案?我是 Stack Overflow 的新成员。
  • 啊,我不介意。如果您想接受这个答案,请按 up 和 downvote 按钮下的 accept-button-mark-thingy 以及我的答案左侧的投票计数器。 :)
猜你喜欢
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 2015-05-30
相关资源
最近更新 更多