我现在卡住了几天,试图将mysql添加到我的sails项目中作为非默认数据存储。如果有人知道答案。请
似乎config/datastore .js中的额外数据存储没有被注册,或者显示的错误不正确。
"sails"^ 1.4.0","sails-mysql"^ 1.0.1"
我一直得到这个错误:
错误:钩子(
orm
)加载失败!错误:无法拆除ORM钩。错误详细信息:错误:无效的数据存储标识。没有数据
配置/datastores.js
module.exports.datastores = {
default: {
adapter: 'sails-disk',
},
mysqlDB: {
adapter: 'sails-mysql',
url: `mysql://${process.env.TC_DB_USERNAME}:${process.env.TC_DB_PASSWORD}@${process.env.TC_DB_HOST}:3306/Auth`,
},
};
api/模型/Account.js
module.exports = {
datastore: 'mysqlDB',
schema: false,
};
作为一种解决方案,我使用标准的'mysql'包来连接helper。这工作得很好,但资源繁重,我希望得到标准的帆方法(Account.sendNativeQuery())模型的工作。如果我不能让它工作,也许有人可以告诉我如何使这个连接全局,所以我只需要连接一次,而不是在每个助手调用?
助手/new-account.js
var mysql = require('mysql');
var connection = mysql.createConnection({
host: process.env.TC_DB_HOST,
user: process.env.TC_DB_USERNAME,
password: process.env.TC_DB_PASSWORD,
database: 'Auth',
});
connection.connect();
module.exports = {
friendlyName: 'Creates new account',
description: 'returns the id of the new usr or throws error',
inputs: {
username: {
description: 'The new account name.',
type: 'string',
required: true,
minLength: 4,
maxLength: 64,
},
salt: {
required: true,
type: 'ref',
description: 'generated salt.',
},
verifier: {
required: true,
type: 'ref',
description: 'generated verifier.',
},
email: {
required: true,
type: 'string',
isEmail: true,
description: 'Email linked to account.',
},
},
exits: {
success: {
description: 'All done.',
},
},
fn: async function ({ username, salt, verifier, email }, exits) {
connection.query(
'INSERT INTO account SET ?',
{ username, salt, verifier, email },
function (err, result) {
if (err) {
throw new Error(`MYSQL ERROR: ${err}`);
} else {
console.log(`new user with id ${result.insertId} created.`);
exits.success(result.insertId);
}
}
);
connection.end();
},
};
谢谢
尝试要求sails-mysql
包,而不仅仅包括字符串化的名称,例如:
module.exports.datastores = {
default: {
adapter: 'sails-disk',
},
mysqlDB: {
adapter: require('sails-mysql'),
url: `mysql://${process.env.TC_DB_USERNAME}:${process.env.TC_DB_PASSWORD}@${process.env.TC_DB_HOST}:3306/Auth`,
},
};