Tag: sequelize.js

创buildhasMany关联的元素

第一次问一个堆栈溢出的问题,所以我希望我的措词是正确的:我试图build立一个简单的博客应用程序作为一项家庭作业,同时使用Sequelize进行数据库pipe理。 但是,当我尝试创build与我的模型关联的元素时,尝试创build一些testing数据时遇到问题。 这里是我的代码,它应该与文档中的语法相同( http://docs.sequelizejs.com/en/v3/docs/associations/#creating-elements-of-a-hasmany-or-belongstomany-association ) 。 当前的行为:两个用户都是使用所有属性创build的,根本不创buildpost,也没有给出错误。 masterdb.sync({force:true}).then( x => { return Promise.all([ User.create({ username:'Timothy', password:'plain-text', email:'x@msn.nl', Posts: [ { body: 'Hello everyone, my name is Timothy.' }, { body: 'Today was a good day.'} ] }, { include: [ Post ] }), User.create({ username:'Jack Sparrow', password:'plain-text', email:'jacksparrow@msn.nl' }), ]) }).catch(x => console.log(x)) 这里是我的模型和关系声明: const […]

SequelizeJS迁移:将多个外键添加到相同的模型?

使用sequelize cli实用工具的迁移function时,可以通过添加新列来创build新的外键。 但是,我试图创build多个外键到同一个模型时遇到了一个错误。 通过运行sequelize db:migrate生成的外键名称不是独特的。 数据库引擎要求为所有外键分配一个唯一的名称,但SequelizeJS似乎初始化所有外键的名称为: // Excerpt from sequelize/lib/dialects/mysql/query-generator.js // Line 195 {fkName: this.quoteIdentifier(attrName + '_foreign_idx')} 如果索引号idx不正确增加,这当然会产生相同的密钥。 在Sequelize库的某个地方,在使用db.sync()初始化模型时, _foreign_idx的idx部分必须被一个实际的数值replace,但是我还没有能够确定在哪里。 我也validation了sequelize在使用db.sync()通过检查另一个数据库中的外键确实增加了索引值。 在该数据库中,外键被命名为_ibfk_1 , _ibfk_2 ,.., _ibfk_n 有没有人遇到过外键生成器产生相同名称的问题? 有没有人有一个build议,如何可以避免/缓解使用Sequelize迁移? 我使用MySQL作为数据库引擎,但外键名称生成器遵循相同的程序,例如。 postgre,以及我能够解释的续集源代码。 例 以下迁移将创build三个模型,并使用来自sequelize cli的函数addColumn函数在它们之间创build关系。 脚本模拟教练和队伍由赞助商赞助的场景。 在这个模型中,我们希望在教练和球队模型中都参考赞助商id。 不幸的是,这将创build两个名为sponsorId_foreign_idx外键(一个在教练上,另一个在团队模型上),因此外键不会有唯一的名字。 但是,如果idx被一些递增的值改变,这将被避免。 var Promise = require('bluebird'); module.exports = { up: function (queryInterface, Sequelize) { return Promise .join( queryInterface .createTable('sponsor', { […]

以任何方式获取Express'用户?

我使用Sequelize和钩子(请参阅: https : //github.com/sequelize/sequelize/pull/894 )。 我试图实现一种日志logging系统,宁愿login钩子,而不是在我的控制器。 任何人有任何想法,我将能够从req.user我的用户到我的钩子函数? db.define('vehicle', { … }, { hooks: { beforeUpdate: function(values, cb){ // Want to get my user in here. } } });

Node.js seqelizeembeddedhasMany ID

我正在试验一个使用ember-data的Ember应用程序和一个使用Sequelize.js从MySQL提供数据的node.js后端。 我的问题:如果我有一个评论模型关联到一个Post模型通过hasMany预期的JSON由ember-data看起来像 { "post": { "comment_ids": [1, 2, 3] } } 什么是最好的方式来查询/生成这个JSON没有昂贵的循环等使用sequelize? 注释模型有一个带有post_id的外键。

如何在sqlite3中使用sequelize做基于“date”列的查询?

我正在使用sqlite3的Sequelize,但无法查询基于“date”types的数据列。 这是我的模型定义: var sensorData = sequelize.define('Data', { time: Sequelize.DATE, value: Sequelize.FLOAT, type: Sequelize.STRING, source: Sequelize.STRING }, { timestamps : false }); 现在我想在这个函数中用'time'比给定的时间得到所有的logging: function selectData(start_date, num_of_records, callback) { sensorData.findAll({ limit: num_of_records, where: [time, '???'], <====== How to specify the condition here? order: 'time'}).success(callback); } 我无法在Sequelize的网站上find关于基于“date”types的查询语句的任何内容。 任何想法?

从行中获取值,并与Sequelize关联

我使用Sequelize,MySQL和Node来编写Web应用程序。 对于我的大部分数据库需求,我通常会进行一些validation,然后提取我的模型(热切地与关联)并将它们发送回客户端,几乎总是按照原样(至less到现在为止)。 我写了一个小的实用函数getValuesFromRows从一个返回的行数组中提取值: getValuesFromRows: function(rows, valuesProp) { // get POD (plain old data) values valuesProp = valuesProp || 'values'; if (rows instanceof Array) { var allValues = []; for (var i = 0; i < rows.length; ++i) { allValues[i] = rows[i][valuesProp]; } return allValues; } else if (rows) { // only one object return rows[valuesProp]; […]

我如何使默认时间戳列的行为?

我试图强制这些列做两件事情: 使用“没有时区的时间戳”(后端是Postgres)。 实际上将后台的默认设置为“now / utc”。 { // a bunch of column definitions createdAt: { type: DataTypes.DATE, defaultValue: sequelize.fn('now') } }, { timestamps: false, comment: "this isn't even the real comment" } 结果是这样的: CREATE TABLE IF NOT EXISTS "common"."images" ("id" VARCHAR(255) , "imageType" VARCHAR(255), "mimeType" TEXT, "source" VARCHAR(255), "path" TEXT UNIQUE, "createdAt" TIMESTAMP WITH TIME ZONE […]

数据types的字段从sequelize模型

是否有可能从一个sequelize模型获得给定字段的数据types。 假设我们有一个如此定义的模块 User = sequelize.define 'User', { id: type: DataTypes.UUID primaryKey: true defaultValue: DataTypes.UUIDV4 firstName: type: DataTypes.STRING allowNull: false middleName: type: DataTypes.STRING allowNull: true defaultValue: null lastName: type: DataTypes.STRING allowNull: true defaultValue: null } 我需要说出头数字的数据types。 模型中有没有可以实现这个的方法?

Sequelize.js:如何处理与MySQL的重新连接

我一直使用Mongo和Node,但现在由于现有的数据源,我需要连接一个节点应用程序与Mysql。 Sequelize似乎是一个很好的解决scheme,但我不知道如何处理连接错误,重新连接和重新尝试。 在第一次运行时检查连接错误.authenticate().then().catch(function(error){…}); 但是,如果我失去连接,并希望重新连接?

NodeJS Sequelize – 无法读取未定义的属性'_isSequelizeMethod'

我有一个使用Express的NodeJS服务器。 对于我的数据库,我使用Sequelize,并且像Sequelize文档中那样定义了我的模型: 车型/ index.js "use strict"; var fs = require("fs"); var path = require("path"); var Sequelize = require("sequelize"); var sequelize = new Sequelize('mydb', 'root', '', { host: 'localhost', dialect: 'mysql', pool: { max: 5, min: 0, idle: 10000 } }); var db = {}; fs .readdirSync(__dirname) .filter(function(file) { return (file.indexOf(".") !== 0) && (file !== […]