我正在尝试创建一个REST API,它应该连接到mysql数据库中的现有表,并返回与我们发送的参数相对应的数据。
其实nodejs和strongloop对我来说是新手,这是我第一次与他们合作。我已经关注他们的文档并在mysql中创建了一个表,我运行了如下文件
我已按照以下命令从以下github docs
创建模型,属性等https://github.com/strongloop/loopback-example-database
创建测试-data.js
var server = require('./server');
var dataSource = server.dataSources.accountDB;
var Account = server.models.account;
var accounts = [
{ email: 'foo@bar.com',
created: new Date(),
modified: new Date()
}, {
email: 'bar@bar.com',
created: new Date(),
modified: new Date()
} ];
var count = accounts.length;
dataSource.automigrate('account', function(er) {
if (er) throw er;
accounts.forEach(function(account) {
Account.create(account, function(er, result) {
if (er) return;
console.log('Record created:', result);
count--;
if(count === 0) {
console.log('done');
dataSource.disconnect();
}
});
});
});
这会自动在我的数据库中创建表格和记录,我不想要这个。
实际上我已经有了一个不同的表,我想用strongloop连接。
我完全无能为力,任何帮助都会受到赞赏。
答案 0 :(得分:3)
我发现这试图做同样的事情。我修好它以便优雅地结束。对我来说很棒。 原文:https://gist.github.com/serkanserttop/64fc2d4465fb154066db#file-discover-js
var path = require('path');
var app = require(path.resolve(__dirname, '../server'));
var fs = require('fs');
var loopback = require('loopback');
var app_dir = './';
require('node-babel')();
var dataSource = app.dataSources.accountDs;
var db = 'myDB',
owner = 'root';
function capitaliseFirstLetter(string) {
return string.charAt(0)
.toUpperCase() + string.slice(1);
}
function jsFileString(model_name) {
return '' + 'module.exports = function(' + capitaliseFirstLetter(model_name) + ') {\n' + '\t\n' + '};';
}
function autoGenerateModelFiles() {
dataSource.discoverModelDefinitions({
schema: db
}, function(err, models) {
var count = models.length;
console.log(models.length);
models.forEach(function(model) {
dataSource.discoverSchema(model.name, {
associations: true
}, function(err, schema) {
if (schema.options.mysql.schema !== db) {
console.log('options.mysql.schema !== db', schema);
}
fs.writeFile(app_dir + 'common/models/' + model.name + '.json', JSON.stringify(
schema, null, ' '), function(err) {
if (err) throw err;
console.log('Saved ' + model.name);
});
fs.writeFile(app_dir + 'common/models/' + model.name + '.js', jsFileString(
model.name), function(err) {
if (err) throw err;
console.log('Created ' + model.name + '.json file');
});
count = count - 1;
if (len === 0) {
console.log("DONE!", count);
dataSource.disconnect();
return;
}
});
});
});
}
答案 1 :(得分:0)
您实际需要的是从数据库中发现模型。在strongloop页面上有一个文档。
http://docs.strongloop.com/display/public/LB/Database+discovery+API
这是一个有效的例子:
var ds = app.dataSources.accountDB;
ds.discoverModelDefinitions(function (err, models) {
models.forEach(function (model) {
ds.discoverSchema( model.name, function (err, schema){
console.log(schema);
});
});
});
将此代码放在server.js内部(即内部引导方法)。我假设您已正确设置数据源并且还安装了loppback mysql连接器。这将遍历所有表,“schema”将包含从数据库中发现的模型定义。
答案 2 :(得分:0)
您可以使用slc arc
基于MySQL表生成模型,之后您应该能够使用API执行基本的CRUD操作。在以下链接中,您可以找到有关它的更多信息: