我正在尝试让Loopback发现并构建我的第一个表。我在他们的页面底部使用了这个简单的例子:
http://docs.strongloop.com/display/LB/Database+discovery+API#DatabasediscoveryAPI-Exampleofbuildingmodelsviadiscovery
我看到了我正在发现的表的输出,但API Explorer没有显示该表或任何新生成的端点。此外,model-config.js文件不会使用新的表对象进行更新。以下是在服务器启动时完成的代码的基本部分:
var loopback = require('loopback');
var boot = require('loopback-boot');
var DataSource = require('loopback-datasource-juggler').DataSource;
var mysqlSource = require('./datasources.json');
var dataSource = new DataSource('mssql', mysqlSource.mysqlserver);
var app = module.exports = loopback();
// Set up the /favicon.ico
app.use(loopback.favicon());
// request pre-processing middleware
app.use(loopback.compress());
// -- Add your pre-processing middleware here --
dataSource.discoverAndBuildModels('CATS', {owner: 'mamacat'}, function (err, models) {
models.Cat.find(function (err, cat) {
if (err) {
console.error(err);
} else {
console.log(cat);
}
dataSource.disconnect();
});
});
// boot scripts mount components like REST API
boot(app, __dirname);
总而言之,这个程序运行时没有错误。但http://localhost:3000/explorer
上没有展示新的模型
发布于 2015-07-09 16:24:09
似乎发现脚本只显示输出,而不创建模型文件。我在回送文档中找到了一些说明:
http://docs.strongloop.com/display/public/LB/Discovering+models+from+relational+databases
在Basic Procedure一节中,第二步:
在common/models/model-name.json.中使用fs.writeFile()保存输出
因此,您可以尝试以下方法:
在yourloopbackproject/server/datasources.json文件中设置
{
"db": {
"name": "db",
"connector": "memory"
},
"accountDs": {
"host": "mysqlServerName",
"port": 3306,
"database": "databaseName",
"username": "username",
"password": "password!",
"name": "accountDs",
"connector": "mysql"
}
}
var path = require('path');
var fs = require('fs');
var app = require(path.resolve(__dirname, '../server'));
var outputPath = path.resolve(__dirname, '../../common/models');
var dataSource = app.dataSources.accountDs;
function schemaCB(err, schema) {
if(schema) {
console.log("Auto discovery success: " + schema.name);
var outputName = outputPath + '/' +schema.name + '.json';
fs.writeFile(outputName, JSON.stringify(schema, null, 2), function(err) {
if(err) {
console.log(err);
} else {
console.log("JSON saved to " + outputName);
}
});
}
if(err) {
console.error(err);
return;
}
return;
};
dataSource.discoverSchema('tableName',{schema:'schemaName'},schemaCB);
此脚本基于:http://www.reddit.com/r/strongloop/comments/2upy76/autodiscoveryjs_recipe/
在脚本执行之后,您将在
我希望这能帮到你!
发布于 2015-07-20 03:20:35
使用Arc来完成此操作。从项目文件夹中运行slc arc,它将在默认浏览器中显示名为arc的gui工具。如果您尚未注册,请注册并登录。您将被定向到StrongLoop的图形用户界面工具,即the Arc。从左侧窗格的列表中选择您的模型。您将能够看到保存和迁移按钮。只需单击migrate按钮,您的表将被创建到model中。(毫秒之内!)
干杯!
发布于 2016-05-27 17:14:34
目前,发现api仅用于发现模式,而不用于创建模型。请使用以下项目创建具有一对一和一对多关系以及所有模型的模型。
https://github.com/savsharma2/loopback-sql-create-model-with-relation/
https://stackoverflow.com/questions/26128285
复制相似问题