此问题专门针对StrongLoop的LoopBack Node.js Framework(由IBM拥有/由IBM支持)。据我所知,到目前为止,这应该是一个两步过程。
我认为我使用以下NPM包成功处理了发现/模型创建部分:https://www.npmjs.com/package/loopback-discovery(项目的GitHub repo可在此处找到:https://github.com/akera-io/loopback-discovery)
从那里我认为我应该能够访问我的API并访问MySQL数据源中的数据,但是唉......
当我完成上述步骤时,我成功地从loopback-project / common / models目录中的所选表中获取了所有模型(我的模型碰巧是来自博客的帖子)。
在我的loopback-project / server / model-config.json中,我的MySQL数据库中的所有表/模型都存在,然后我将“posts”模型设置为public,以便通过API公开它。
由于上面讨论的NPM模块使用LoopBack和LoopBack数据源,我知道我可以连接到我的数据库,我的loopback-project / server / datasource.js文件正确配置环回以与我的服务器/ mysql实例通信。
当我使用node启动我的loopback实例时。我可以点击http://0.0.0.0/explore,我的“帖子”模型的CRUD选项正如我所期望的那样。
但是。
当我尝试通过GET Posts Api Endpoint查询我的数据库时,我收到以下错误:我的表不存在(即使它在MySQL中显然也是如此,因为我的博客正在使用它并且之前的NPM包能够从它:
{
"error": {
"statusCode": 500,
"name": "Error",
"message": "ER_NO_SUCH_TABLE: Table 'my_mysqlDB.Posts' doesn't exist",
"code": "ER_NO_SUCH_TABLE",
"errno": 1146,
"sqlState": "42S02",
"index": 0,
"stack": "Error: ER_NO_SUCH_TABLE: Table 'my_mysqlDB.Posts' doesn't exist\n at Query.Sequence._packetToError (/app/AvailableTripsLBcode/node_modules/mysql/lib/protocol/sequences/Sequence.js:52:14)\n at Query.ErrorPacket (/app/AvailableTripsLBcode/node_modules/mysql/lib/protocol/sequences/Query.js:77:18)\n at Protocol._parsePacket (/app/AvailableTripsLBcode/node_modules/mysql/lib/protocol/Protocol.js:280:23)\n at Parser.write (/app/AvailableTripsLBcode/node_modules/mysql/lib/protocol/Parser.js:75:12)\n at Protocol.write (/app/AvailableTripsLBcode/node_modules/mysql/lib/protocol/Protocol.js:39:16)\n at Socket.<anonymous> (/app/AvailableTripsLBcode/node_modules/mysql/lib/Connection.js:103:28)\n at emitOne (events.js:96:13)\n at Socket.emit (events.js:188:7)\n at readableAddChunk (_stream_readable.js:176:18)\n at Socket.Readable.push (_stream_readable.js:134:10)\n at TCP.onread (net.js:551:20)\n --------------------\n at Protocol._enqueue (/app/AvailableTripsLBcode/node_modules/mysql/lib/protocol/Protocol.js:141:48)\n at PoolConnection.query (/app/AvailableTripsLBcode/node_modules/mysql/lib/Connection.js:208:25)\n at runQuery (/app/AvailableTripsLBcode/node_modules/loopback-connector-mysql/lib/mysql.js:186:16)\n at executeWithConnection (/app/AvailableTripsLBcode/node_modules/loopback-connector-mysql/lib/mysql.js:228:7)\n at Ping.onOperationComplete [as _callback] (/app/AvailableTripsLBcode/node_modules/mysql/lib/Pool.js:110:5)\n at Ping.Sequence.end (/app/AvailableTripsLBcode/node_modules/mysql/lib/protocol/sequences/Sequence.js:86:24)\n at Ping.Sequence.OkPacket (/app/AvailableTripsLBcode/node_modules/mysql/lib/protocol/sequences/Sequence.js:95:8)\n at Protocol._parsePacket (/app/AvailableTripsLBcode/node_modules/mysql/lib/protocol/Protocol.js:280:23)\n at Parser.write (/app/AvailableTripsLBcode/node_modules/mysql/lib/protocol/Parser.js:75:12)\n at Protocol.write (/app/AvailableTripsLBcode/node_modules/mysql/lib/protocol/Protocol.js:39:16)\n at Socket.<anonymous> (/app/AvailableTripsLBcode/node_modules/mysql/lib/Connection.js:103:28)\n at emitOne (events.js:96:13)\n at Socket.emit (events.js:188:7)\n at readableAddChunk (_stream_readable.js:176:18)\n at Socket.Readable.push (_stream_readable.js:134:10)\n at TCP.onread (net.js:551:20)"
}
}
我只关心我的数据库(帖子)上的一个表,我只需要读不写/写。我不确定我是否需要所有其他模型的模型在common / models目录中,或者如果我只能拥有与数据源上的'posts'表相关的Posts模型,为此我尝试了两种方式没有运气。
我觉得有些东西我想念LoopBack如何处理基于模型的模式创建,但我还没有运气解决它。
其他一些说明/细节。
答案 0 :(得分:2)
如果您的模型名为"Post"
,则环回将在Post
中查找mysql
表。
"name": "Post",
"options": {
"idInjection": false,
"mysql": {
"schema": "LOOPBACK",
"table": "post"
}
}
在post.json文件中添加它,它将起作用