Articles of sequelize.js

防止在node.js应用程序中使用sequelize放置数据库

首先我使用node.js和sequelize ORM和postgre SQL。 我有两个简单的问题: 每次我重新运行我的节点应用程序sequelize正在删除和创build数据库中的所有表。 如何防止这样做(我不希望我的数据库中的logging被删除)? 我试图设置我的NODE_ENVtesting,但没有帮助。 续集迁移如何知道它停止的地方(哪个迁移已经执行,哪个不迁移)。 例如,当我在Grails框架中使用数据库迁移时,它会自动在数据库中创build表,其中保留了在重新运行应用程序之前执行的所有迁移时间戳,并查看该表并知道哪些迁移已完成,哪些不是。 使用node / sequelize时我没有看到任何表,所以它是如何工作的? 🙂 谢谢,伊万

Node.js / Sequelize.js / Express.js – 如何插入到多对多的关联? (同步/asynchronous?)

我有两个模型(个人,电子邮件),并试图使用Sequelize命令插入创build的“Individual_Email”表。 虽然Sequelize正在创build所需的表,但在尝试从该表添加/获取/设置时会返回以下错误:“Object [object promise]'没有方法'addEmail'”。 我错过了什么? Sequelize文档说如果模型是用户和项目,“这将添加方法getUsers,setUsers,addUsers到项目和getProjects,setProjects和addProject到用户。 这使我相信(看许诺),我很可能误解了如何使用Node的asynchronousfunction。 我已经尝试了插入的同步和asynchronous版本,都返回上面相同的消息。 续集文档: http ://docs.sequelizejs.com/en/latest/docs/associations/ 码: 路线/ index.js var express = require('express'); var router = express.Router(); var models = require('../models'); /* GET home page. */ router.get('/', function(req, res, next) { 'use strict'; var tIndividual, tEmail; tIndividual = models.Individual.create({ name: "Test" }); tEmail = models.Email.create({ address: "test@gmail.com" }); console.log(tEmail); res.render('index', […]

Sequelize – 自引用有很多关系

我正在用Mysql使用Sequelize。 我有一张桌子: 项目 包含字段: {ID,名称,价格} 我想在自己的项目中build立一种自我关系。 目标能够做Item.subItems并获得属于该项目的所有子项目的列表。 并请告诉我如何纳入新模型 包括:[{model:SubItem}] …当我提取查询。 我已经尝试了很多关系的select: Item.hasMany(Item,{through:SubItem,as:'subItems'}); Item.hasMany(项目); 谢谢您的帮助!

如何防止Sequelize使用Postgres为主键插入NULL

我已经在postgresql 9中创build了一个表 create table stillbirth(id serial primary key, state varchar(100), count int not null, year int not null); 试图在node.js上用sequelize 1.4.1版本编写一个示例。 将上表映射为 var StillBirth = sequelize.define('stillbirth', { id: {type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true}, state: Sequelize.STRING, year: Sequelize.INTEGER, count: Sequelize.INTEGER }, {timestamps: false, freezeTableName: true}); 现在当我尝试创build死胎的一个新的实例并保存它时,我得到错误。 / **新build实例创build代码** / StillBirth .build({state: objs[j].state, year: objs[j].year, count: objs[j].count}) […]

当在子数组中使用“where”和“in”时,会产生错误

这是我的模型定义: var Tag = sequelize.define('Tag', { name: Sequelize.STRING }); var Event = sequelize.define('Event', { name: Sequelize.STRING, }); Event.hasMany(Tag, {as: 'tags', through: 'event_tags', foreignKey: 'eventId'}); Tag.hasMany(Event, {as: 'events', through: 'event_tags', foreignKey: 'tagId'}); 换句话说就是:有事件和标签。 事件标有许多标签。 我试图运行这个查询: Event .findAndCountAll({ include: [{model: Tag, as: 'tags'}], where: {'tags.id': {in: [1,2,3,4]}}, order: order, limit: pageSize, offset: pageSize * (page – 1), […]

得到.findOrCreate()错误

我使用Sequelize作为ORM。 这是我的用户模型: ### User model ### User = exports.User = globals.sequelize.define "User", username: globals.Sequelize.STRING email: type: globals.Sequelize.STRING validate: isEmail: true hash: globals.Sequelize.STRING salt: globals.Sequelize.STRING(512) fname: globals.Sequelize.STRING lname: globals.Sequelize.STRING country: globals.Sequelize.STRING 我正在保存用户: globals.models.User.findOrCreate username: "johny" password: "pass" email: "johny93[###]example.com" .success (user, created)-> console.log user.values res.send 200 .error -> console.log err # how to catch this? res.send […]

Sequelize.js onDelete:'cascade'不会删除logging的续集

我有Product表与以下列[id, name, CategoryId]和Category表[id, name] 产品型号: – module.exports = function(sequelize, DataTypes) { var Product = sequelize.define('Product', { name: DataTypes.STRING }, { associate: function(models) { Product.belongsTo(models.Category); } }); return Product } 分types号: – module.exports = function(sequelize, DataTypes) { var Category = sequelize.define('Category', { name: { type: DataTypes.STRING, allowNull: false } }, { associate: function(models) { Category.hasMany(models.Product, { […]

如何在模型更改后创buildSequelize cli db迁移

我开始sequelize并在线上跟随他们的video教程 。 运行后 node_modules/.bin/sequelize model:create –name User –attributes username:string node_modules/.bin/sequelize model:create –name Task –attributes title:string 为创build用户和创build任务创build了迁移文件。 然后,我不得不添加到每个模型的关联如下: // user.js classMethods: { associate: function(models) { User.hasMany(models.Task); } } // task.js classMethods: { associate: function(models) { Task.belongsTo(models.User); } } 但是,已经创build了用于创build用户和任务的表的迁移文件。 我必须手动更新它们才能添加关系吗? “migration:create”命令创build迁移框架文件。 我是否需要手动填写框架文件,或者除了创build模型之外,是否还可以自动创build完整的迁移文件? PS我见过以下的stackoverflow问题: 如何自动生成与Sequelize模型的Sequelize CLI迁移?

是否将caching常见请求集中在一起

所以我的问题很简单 如果我将执行相同的查询每秒/分钟很多时间(如User.find(test_user_id)),它会发送请求数据库每次或它只是caching查询结果?

sequelize.js TIMESTAMP不是DATETIME

在我的node.js应用程序中,我有几个模型,我想定义TIMESTAMPtypes的列,包括默认的时间戳created_at和updated_at 。 根据sequelize.js的文档 ,只有一个DATE数据types。 它在MySQL中创buildDATETIME列。 例: var User = sequelize.define('User', { … // columns last_login: { type: DataTypes.DATE, allowNull: false }, … }, { // options timestamps: true }); 是否有可能生成TIMESTAMP列呢?