我试图使用书架集合并返回整个表格
< TypeError: Cannot read property 'apply' of undefined
< at CollectionBase (/projects/twitter/node_modules/bookshelf/lib/base/collection.js:30:18)
< at child [as constructor] (/projects/twitter/node_modules/bookshelf/lib/extend.js:15:14)
< at new child (/projects/twitter/node_modules/bookshelf/lib/extend.js:15:14)
< at Function.collection (/projects/twitter/node_modules/bookshelf/lib/bookshelf.js:110:14)
< at all (/projects/twitter/node_modules/bookshelf/lib/model.js:703:39)
< at fetchAll (/projects/twitter/node_modules/bookshelf/lib/model.js:768:27)
这是我的模型然后集合
var Users_Data_At_Time = bookshelf.Model.extend({
tableName: 'Users_Data_At_Time',
Users: function(){
return this.belongsTo(Users);
},
Tweets_At_Time: function(){
return this.hasMany(Tweets_At_Time);
}
});
var Users_Data_At_Time_Collection = bookshelf.Collection.extend({
model: Users_Data_At_Time
});
我尝试使用.fetchAll
调用集合和模型这是我尝试使用模型的地方
new Users_Data_At_Time().fetchAll()
.then(function (users) {
console.log(users);
}).catch(function (error) {
console.log(error);
})
我已经看过几个例子,看来这是正确的做法,但我仍然遇到了这个错误。
任何想法或想法都将是一个巨大的帮助
答案 0 :(得分:0)
我想在所有书架中做到这一点,但作为解决方法我发现this overflow post使用书架中knex的原始查询来选择全部。
我不确定这是否是唯一的解决方案,如果有其他人请告诉我
答案 1 :(得分:0)
您的问题可能是文件/模型的命名。表名在您的数据库中是snake_cased,所以这显然很好。但模型名称需要是PascalCased(又名UpperCamelCase)。 INVERSE适用于您的文件,因此它应该是snake_cased。
检查这个人,特别是最后一段: https://www.npmjs.com/package/bookshelf-model