Tag: sequelize.js

如何在Sequelize中设置关联

我有两个模型,定义在这里: 用户型号: var Sequelize = require("sequelize"); module.exports = function (sequelize) { var User = sequelize.define('user', { name:{ type:Sequelize.STRING(50), defaultValue:''}, email:Sequelize.STRING(50), password:Sequelize.STRING(256) }, { associate: function (models) { User.hasMany( models.Article, { foreignKey: 'postUserId' } ); User.hasMany( models.Article, { foreignKey: 'editUserId' } ); User.hasMany( models.Article, { foreignKey: 'deleteUserId' } ); } }); return User; }; 文章模式: module.exports […]

使用Sequeilze中的JSON字段select

我想find一些项目,但从JSON字段( body )只返回一个字段( name )。 JSON字段也是一个关联( Version ),如果有关系的话。 我想这将是这样的事情。 Part.findAll({ attributes: ['slug'], include : [{ model: Version, limit: 1, order: [['createdAt', 'DESC']], attributes: ['body.name'] }] })

Sequelize:join最大版本logging关联表?

在我的应用程序中,我有两个模型user和userdetail 。 user详细信息只是一个包含唯一ID的表,而userdetail在(user_id, version)上有唯一键。 当我想获得最新的用户数据时,我运行SQL类似于以下内容: SELECT userdetail1.password_hash FROM user JOIN userdetail userdetail1 ON userdetail1.user_id = user.id JOIN ( SELECT user_id, MAX(version) version FROM userdetail GROUP BY user_id ) userdetail2 ON userdetail2.user_id = userdetail1.user_id AND userdetail2.version = userdetail1.version WHERE user.id = 1; 我正在处理的数据库只允许INSERT,所以我只能通过在userdetail插入一个新行来“更新”logging。 我在Sequelize中定义了两个模型: var UserDetail = sequelize.define('userdetail', { id: { type: DataTypes.INTEGER(10), allowNull: false, primaryKey: […]

续集链查找与belongsTo

我有三个模型,讨论,用户和消息,其中: Message.belongsTo(models.Discussion, {as: 'discussion'}) Discussion.belongsToMany(models.User, {through: models.UserDiscussion}) 我想获得有关特定用户的所有消息。 从用户,我可以很容易地得到与user.getDiscussions()所有讨论。 但是,我不知道如何在一个请求中find这些消息。 一旦我有讨论arrays,我可以打电话find models.Message.findAll({where: {discussionId: discussions[i].id}}) 对于数组中的每一个讨论,但这是asynchronous的,我不知道如何链接它们,只返回消息。 有没有归属关系的getter?

根据关联查找,但在结果中不包含结果中的关联

总之,我想使用include: [{ model, where }]方法在表格中find某个东西,但实际上并不包含我所包含的模型。 我有两个模型,一个一对多的关联, Part和Set 。 我发现属于Set s的Part s是基于Set的slug 。 喜欢这个: yield Part.findAll({ where: { slug: 'my-part' }, include : [{ model: Set, where: { slug: 'my-set' } }]… 这给了我一个像这样的数组: [ { is: 1, slug: 'my-part', body: 'this is my nice part', Set: { slug: 'my-set', body: 'what a set', id: 1 } […]

尝试使用sequelizesearch两列

我试图使用sequelize在一个MySQL表中search两列,使用相同的术语。 因此,例如,我想在名为users的表中search名字和姓氏的列,使用var称为用户input。 我只是设法使它成为第一个也是最后一个,而不是第一个或最后一个。 我将如何预处理这个查询?

在Node环境中导入SQL转储

我想要一个npm脚本来创build/configuration/ etc。 最后导入一个SQL转储。 整个创build,configuration等都在工作,但是,我无法导入工作。 数据永远不会被插入。 这就是我所拥有的(永远不要嵌套的callback,因为他们将变成承诺): connection.query(`DROP DATABASE IF EXISTS ${config.database};`, err => { connection.query(`CREATE DATABASE IF NOT EXISTS ${config.database};`, err => { connection.query('use DATABASENAME', err => { const sqlDumpPath = path.join(__dirname, 'sql-dump/sql-dump.sql'); connection.query(`SOURCE ${sqlDumpPath}`, err => { connection.end(err => resolve()); }); }) }); }); 我也试过以下的Sequelize(ORM): return new Promise(resolve => { const sqlDumpPath = path.join(__dirname, […]

在保存父项时,会自动保存关联对象

鉴于以下模型: var Project = sequelize.define('project', {/* … */}) var Task = sequelize.define('task', {/* … */}) Project.hasMany(Task, {as: 'Tasks'}); Task.belongsTo(Project); 在保存项目时,如何更改任务并更新数据库。 Project.findById(1, {include: Task, as: 'tasks'}).then(function(project) { project.tasks.each(function(task) { task.status = 'done'; }); project.status = 'closed'; project.updatedBy = 'user'; // …many more statements that modify the project and tasks for example project.save(); // << I want […]

在多个文件中join一对多的关联

我正在研究一个到多个关联的续集。 大多数教程和文档都显示了两个模型在同一个文件中定义的示例。 我目前有两个文件,第一个city.js: const Promise = require('bluebird'); var Country = require('./country'); var City = sequelize.define("City", { id: { type: DataTypes.INTEGER, field: 'id', primaryKey: true, autoIncrement: true },… }, { freezeTableName: true, timestamps: false }); City.belongsTo(Country, {foreignKey : 'countryId', as: 'Country'}); Promise.promisifyAll(City); module.exports = City; 和第二个文件country.js: const Promise = require('bluebird'); var City = require('./city'); var Country […]

续集属于并包含

我很难在查询中使用BelongsTo关系。 这是关系: models.Area.hasMany(models.Airport); models.Airport.belongsTo(models.Area, {foreignKey: 'areaId', as: 'area'}); 现在我尝试运行一个查询: models.Airport .findAll( { where: { active: 1 }, include: { model: models.Area } }) 我得到一个错误: Error: area is not associated to airport! 我究竟做错了什么?