Tag: orm

sails.js一对多的关系 – variables所有者集合属性

在sailsjs.org的文档中,拥有一方的一对多关系是这样定义的 //user.js module.exports = { attributes: { name:'STRING', age:'INTEGER', pets:{ collection: 'pet', via: 'owner' } } } “pet”是一个常量,在SQL数据库上有一致的模式。 如果我想拥有一个超类宠物和具有独特属性(不同行数)的子类呢? 说我有一只章鱼和一只狗。 狗有4条腿和2个耳朵。 章鱼有8个触手。 唯一的共性将被抽象成宠物类(颜色,名字,年龄)。 如果这是不可能的,我将不得不诉诸这样的事情? //user.js module.exports = { attributes: { name:'STRING', age:'INTEGER', dogs:{ collection: 'dog', via: 'owner' }, octopuses:{ collection: 'octopus', via: 'owner' } } } 然而,如果我想介绍更多的宠物,如鹰(可以飞),鹦鹉(可以说),这可能会相当混乱,如果我要使用SQL数据库会导致许多空值。 也许mongoDB会是理想的呢?

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)。

为什么我们使用ORM或ODM来pipe理任何graphDB?

嘿大家我在nodeJS应用程序工作。 我search了一些模块来pipe理我的数据库(orientdb)。 我的问题是:为什么我们使用任何ORM或ODM(或为什么重新开始),因为有一个模块可以提供许多function来pipe理数据库。 我仍然困惑什么东西应该使用orientorm( https://github.com/mav-im/orientorm )或东方( https://github.com/codemix/oriento ) 预先感谢..

使用子select装订JS自定义查询

我是ORM的新手,我不知道如何使用ORM来做到这一点。 考虑到我有5个表格: 标签,拍卖,用户,user_tag和auction_tag 我正在使用SequelizeJS,我怎样才能得到这样的查询? select A.id, A.title, A.content, A.createdAt, U.id, U.picture, U.name from Auction A, User U, User U2 where A.userId = U.id and U2.id = x and exists (select AT.id from Auction_Tag AT where AT.auction = A.id and AT.tag in ( select T.id from Tag T, User_Tag UT where U2.id = UT.user and UT.tag […]

Sails.js如何将数据插入连接表(多对多)

我有一个错误插入到我的连接表中的数据,我不知道我是否正确的做法。 这是我的两个模型,有多对多的关联。 Commit.js: module.exports = { schema: true, attributes: { idCommit : { type: 'integer', autoIncrement: true, primaryKey: true, unique: true }, revision : { type: 'integer', required: true }, issues: { collection: 'issue', via: 'commits', dominant: true } } }; Issue.js: module.exports = { schema: true, attributes: { idIssue : { type: 'integer', autoIncrement: […]

根据belongsToMany关系字段进行过滤

使用链接表来过滤数据是不可能的。 有两个表教师和俱乐部。 他们有关如何belongsToMany。 我需要让所有的教练club_id =值。 教练模型: sequelize.define('Instructor', { instance_id: DataTypes.INTEGER, name: DataTypes.STRING(255) }, { tableName: 'instructors', timestamps: false, classMethods: { associate: function (models) { Instructor.belongsToMany(models.Club, { through: 'InstructorClub' }); } } }); 俱乐部模式: sequelize.define('Club', { instance_id: DataTypes.INTEGER, name: DataTypes.STRING }, { tableName: 'clubs', timestamps: false, classMethods: { associate: function (models) { Club.belongsToMany(models.Instructor, { through: 'InstructorClub' […]

仅当active = true时,才会将ORM包含模型

我怎样才能findid:1的所有订单,只有当这个项目有active = true时才包括项目? 否则会有空arrays… Order.findAll({ where: { id: 1 }, include: [ { model: Item, where: sequelize.and({'active' : true }) } ] }).then(function(order) { callback(null, order); }); 这显示我只有订单在哪里有一些项目与积极=真。 我想显示所有订单与ID:1和项目作为子数组…

水线:尝试访问未定义的收集string

我用Sails.js使用Waterline。 我想要一个拥有Involved的用户 。 一个事件可以有多个参与 。 一个参与有一个地位。 我的用户类: module.exports = { attributes: { involvements: { collection: 'Involvement', via : 'user' } } }; 我的活动class级: module.exports = { attributes: { creator: { model: 'User' }, involvements: { collection: 'Involvement', via: 'event' } } }; 我的参与课: module.exports = { attributes: { status: { type: 'string', required: true }, […]

什么是“正确”的方式来实现一个“平坦”的结果使用序列化N:M协会

我有一个产品数据库,其中包含一些具有1-n类别的产品。 我的产品存储在products表中,类别在categories ,关联存储在productCategoryRel 。 现在我的愿望是,当我使用Product.find()获取一个产品时,接收一个包含categories属性的结果,其中包含categories表中的数据,没有任何其他嵌套属性。 目前这是我到目前为止: { "id": 1, "title": "Testproduct", "categories": [ { "id": 1, "title": "Testcategory", "productCategoryRel": { "category_id": 1, "product_id": 1 } } ] } 所以我的product包含一个很好的属性categories ,但categories也包含我想要避免的来自productCategoryRel表的所​​有数据。 我已经像地狱一样search,研究了文档和什么,我不确定是否甚至有可能实现我的目标。 这是我如何定义我的(testing)模型: let ProductCategoryRel = sequelize.define('productCategoryRel', {}); let Category = sequelize.define('category', { title: Sequelize.STRING }); let Product = sequelize.define('product', { title: Sequelize.STRING }, { defaultScope: […]

Node.js module.exports不导出整个对象

我试图用express来使用sequelizejs 。 模型被组织成多个目录。 Users(directory) users.js profile.js … Articles article.js comments.js … 我已经修改了sequelize-express示例来遍历子目录,并使用promises导入模型。 sequelize_init.js 'use strict'; var fs = require('fs'), path = require('path'), _ = require('lodash'), config = require('./auth-config'), Sequelize = require('sequelize'), glob = require('glob'), Q = require('q'), db = {}; var sequelize; function getGlobbedModels() { var deferred = Q.defer(); glob('./config/sequelize/models/**/*.js', function(err, files) { if(err) deferred.reject('Glob […]