我试图与Bookshelf创建用户关注者关系,但我无法实现它:(
你能用一个简单的样本来说明我吗?
感谢您的时间:)
SQL:
DROP TABLE IF EXISTS usersfollows;
DROP TABLE IF EXISTS users;
CREATE TABLE users (
"id" serial NOT NULL ,
"username" varchar(40) NOT NULL ,
"email" varchar(255) NOT NULL ,
"pass" varchar(255)
PRIMARY KEY ("id")
);
CREATE UNIQUE INDEX "users_username" ON users (username);
CREATE UNIQUE INDEX "users_email" ON users (email);
CREATE UNIQUE INDEX "users_hash" ON users (uuid);
CREATE UNIQUE INDEX "users_uuid" ON users (uuid);
SELECT setval('users_id_seq', 18);
CREATE TABLE usersfollows (
"id" serial NOT NULL ,
"userId" integer NOT NULL REFERENCES users,
"followId" integer NOT NULL REFERENCES users,
PRIMARY KEY ("id")
);
答案 0 :(得分:1)
这可能有效:
var User = Bookshelf.model.extend({
tableName: 'user',
follows: function() {
return this.belongsToMany(User, 'usersfollows', 'followId', 'userId');
},
followers: function() {
return this.belongsToMany(User, 'usersfollows', 'userId', 'followId');
}
});
注意:
usersfollows
)具有复合PK而不是单独的PK。如果您无法修改表格结构,则可能需要使用through
- 请参阅Bookshelf.js documentation for belongsToMany。如果你可以/需要尝试复合PK的东西,它应该是这样的:
CREATE TABLE usersfollows (
"userId" integer NOT NULL REFERENCES users,
"followId" integer NOT NULL REFERENCES users,
PRIMARY KEY ("userId", "followId")
);
无论如何,我不知道上述内容是否有效 - 我自己对书架没有太多经验 - 如果没有,请让有更多知识渊博的人带来更好的答案