gpt4 book ai didi

mysql - 书架JS : idAttribute to specify alternate id name

转载 作者:行者123 更新时间:2023-11-29 06:36:57 25 4
gpt4 key购买 nike

我已将 idAttribute 行添加到此代码中,希望它允许我为我的 id 字段指定一个备用名称:

bookshelf.ApiUser = Bookshelf.Model.extend({
tableName: 'users',
idAttribute: 'userID'
});

但它破坏了我的 Node 项目。只要我的 id 字段被命名为“id”,项目就可以工作;我如何命名 id 字段 userID 并让 bookshelfjs 知道该做什么?

最佳答案

idAttribute 的值需要是表中的一列。它的目的是告诉 bookshelf 它应该使用哪一列作为 id 字段,比如 forge 和 relations。您不能通过在此处指定不同的名称来更改字段的名称。我知道如何更改模型中的字段名称的唯一方法是更改​​实际的列名称

-----更新----

虽然没有人关心,但您可以通过使用虚拟插件和隐藏插件来隐藏实际的 id 属性并提供具有不同名称的虚拟插件来解决此问题。

首先包含插件

var bookshelf = require('bookshelf');
bookshelf.plugin('virtuals');
bookshelf.plugin('visibility');

然后使用隐藏的 id 属性和用于获取/设置 id 属性的虚拟属性定义模型

bookshelf.ApiUser = Bookshelf.Model.extend({
tableName: 'users',
hidden: ['id'],
virtuals: {
userID: {
get: function() {
return this.get('id');
},
set: function(value) {
return this.set('id', value);
}
}
}
});

您仍然需要数据库中名为“id”的 id 字段。或者您可以将数据库中的主键重命名为 userID。

关于mysql - 书架JS : idAttribute to specify alternate id name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23962840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com