Tag: sequelize.js

Sequelize.js使用PostgreSQL进行一对多devise的最佳实践

我用express.js服务器和sequelize.js运行node.js。 这是一个仅用于API的应用程序,所以没有视图写在节点中。 我想了解如何构buildPostgreSQL中两个数据模型之间的关联。 我有用户和活动,每个都是自己的表,每列都有关于每个(如用户的“用户名”和“电子邮件”,以及活动的“名称”和“消息”)列。 用户可以拥有许多广告系列; 用户可以join许多广告系列。 活动可以由许多用户拥有; 广告系列可以有许多用户join。 我想我会包括两个额外的表来定义用户和活动之间的关系,一个叫做“注册”,告诉哪个用户join了什么,另一个叫做“CampaignOwners”,告诉哪个用户在哪个Campaign上具有pipe理angular色。 这两个表都有UserId和CampaignId列来定义关系。 因此,您可以期望在这些表中的许多行中显示相同的UserId和CampaignId。 如何在后续模式中定义用户和广告活动之间的关系? 我正在检查这些文档( http://sequelizejs.com/docs/latest/associations#block-2-line-0 ),但是我在陌生的领域,并且会感谢如果有人有时间来概念地解释你使用sequelize做这种事情。 例如,我可以读写registry,但是我已经通过将其build模为单独的DB对象来完成该操作,并且具有它自己的API端点('/ api / register /')并传入UserId和CampaignId )。 所以现在我有一个用户,活动和注册的模型。 它的作品,但似乎是错误的,所以我正在寻求澄清。 我欢迎关于我缺less的概念,我缺less的方法,我应该看看的文档的build议… 更新 Sequelize的.hasMany和.belongsTo摆弄这些方法,我正在弄清楚如何创build新的“连接表”以及定义这些关系所创build的区域的方法 。 (这是我第一次接触到ORM)。

如何生存服务器重新启动与segelize postgres数据库和迁移

在我的快速应用程序中,我使用Sequelize来pipe理数据库。 这是我的引导代码。 db.sequelize .sync({ force: true}) .complete(function(err) { if (err) { throw err[0]; } else { //seed require('../db/seed')(db); app.listen(app.get('port'), function() { console.log('express listening on ' + app.get('port')); }); } }); 正如你所看到的,每次我首先启动服务器,我都用硬编码的数据为数据库播种。 这里是初始化sequelize的代码: if (process.env.NODE_ENV === 'test') { console.log('[test] using in memory database'); sequelize = new Sequelize('marbles-site-db', null, null, { dialect: 'sqlite', storage: ':memory:' }); } […]

支持ORM中的MySQL视图支持

我想在我正在构build的Web应用程序中使用续集作为我的ORM。 该应用程序将基于NodeJS – Express构build和MySQL作为其关系数据库。 我在documentaino或网上找不到任何地方,是如何在后续模型中声明存在于我的MySQL数据库中的“视图”…. 是手动构build查询SQL的唯一方法吗? 谢谢

改进node.js代码(后缀,承诺和护照)

我是node.js中的新手,续集,蓝鸟许诺和FBauthentication。 我想坚持我的FBauthentication用户身份validation的细节。 在我的模型中,一个用户可以同时拥有多个身份validation(一个用于浏览器,另一个用于移动设备等)。 我需要照顾这些authentication,所以我有下一个关系: User.hasMany(AUTH); Auth.belongsTo(用户); 我写了这个代码,但我仍然在寻找一个更聪明的解决scheme。 主要目标是将authentication信息添加到用户。 所以,在validation信息之前,我寻找一个持久的用户。 function(accessToken, refreshToken, profile, done) { console.log("FacebookStrategy_function:\naccessToken: " + accessToken); var thatUser=null; User.find({ where: { username: profile.username }, include: [{model: Auth}] }).then(function(user) { console.log("USER IS #1: %j", user); if(user!= null){ // User found in database console.log("User " + profile.id + "found in database"); return user; }else{ // […]

续集目标postgres 8

我一直在项目中使用sequelize一段时间。 从现在起,服务器上没有部署任何东西,我想这只是“npm install”并运行应用程序。 但是我在服务器上发现了这个奇怪的错误: { [SequelizeDatabaseError: error: syntax error at or near "NOT"] name: 'SequelizeDatabaseError', message: 'error: syntax error at or near "NOT"', parent: { [error: syntax error at or near "NOT"] name: 'error', length: 81, severity: 'ERROR', code: '42601', detail: undefined, hint: undefined, position: '17', internalPosition: undefined, internalQuery: undefined, where: undefined, file: 'scan.l', line: […]

如何使用express,sequelize,mocha和supertests进行回滚unit testing

我试图做一个testing插入数据到数据库,testing一个请求与超级,然后回滚与假数据。 有人知道这种方式是正确的吗? 如果不是,请您回答并告诉我哪个方法正确? 提前致谢。 … var app = express(); var request = require('supertest'); var assert = require("assert"); var db = require('../../models'); var mysql = require('mysql'); describe('[Test controller – send_confirmation_email.js]', function () { describe('POST /crowdfunding/sendConfirmationEmail', function () { it('Second post test with data', function (done) { db.sequelize.transaction(function (t) { var cf = db.Crowdfunding.build({ money_raised: 80, project_id: […]

蓝鸟承诺和Sequelize模拟交易primefaces性

我正在使用bluebird.js承诺和sequelize.js来模拟我的网站上的交易。 基本上我尝试在processTransactions中做一些事情,如果一切正常,我会t.commit()事务,否则我会t.rollback()事务。 另外我正在使用bluebird.js承诺做控制stream程。 这里是代码: var processTransactions = function(transactionmain, transactionlist, t){ // code to process transactions }; var processtransaction = function(transaction_id) { // t need to be passed in so we can choose // t.commit() or t.rollback() the transaction sequelize.transaction(function(t){ return Promise.resolve({}).bind({transactionmain: […], transactionlist: […]}) .then(function(){ return [this.transactionmain, this.transactionlist, t]; }) .spread(processTransactions) .then(function(){ t.commit().success(function() {}) }) […]

通过表加紧与加载关联

我已经通过网站上的几个问题,但我仍然不能看到我在这里做错了什么,所以任何帮助将不胜感激。 我收到错误: Organization (organizations) is not associated to User! 组织模型: module.exports = function (sequelize, DataTypes) { return sequelize.define('Organization', { organizationID: { primaryKey: true, type: DataTypes.INTEGER(11), allowNull: false, }, name: { type: DataTypes.STRING, allowNull: false, }, description: { type: DataTypes.STRING, allowNull: true, } }, { tableName: "spa_vOrganization", freezeTableName: true, classMethods: { associate: function (models) { Organization.hasMany(models.User, […]

重新创build数据库sequelizejs是缓慢的

使用sequelize.sync({force:true})命令重新创buildsequelizejs数据库时,需要大约3.5秒才能完成。 现在运行testing时,这个命令必须运行每个testing,从而导致超慢的testing。 有什么办法可以解决这个问题,让testing在1秒内运行?

如何在Sequelize Js中使用Promise来返回实体

var user = db.User.find({ where: { username: username }}).then(function(user) { console.log("Authenticate"+user.authenticate(password)); if (!user) { return null; } else if (!user.authenticate(password)) { return null; } else { return user; } }).catch(function(err){ return err; }); 我用节点JS使用Sequelize JS。 我想要的用户匹配where子句的对象。 但是当我从function返回。 但它进入无限循环。 我是Node Js的新手,我不知道如何在Node Js中使用Promise。 请帮我一下