Tag: sequelize.js

使用Sequelize,NodeJS和AngularJS创build具有n:m关系的logging

更新 :我已经进一步了。 请看post的底部 我正在开发一个基于sql-fullstack yeoman生成器的项目,并且已经使用包含的示例代码作为指导。 事情进展顺利,大部分,但我现在在一个场景,我有两个表/模型与双向N:M关系: 任务组: module.exports = function(sequelize, DataTypes) { var TaskGroup = sequelize.define("TaskGroup", { taskGroupID: { field: "TaskGroupID", type: DataTypes.INTEGER, allowNull: false, unique: true, autoIncrement: true, primaryKey: true }, name: { field: "Name", type: DataTypes.STRING, allowNull: false }, description: { field: "Description", type: DataTypes.STRING }, modifiedBy: { field: "ModifiedBy", type: DataTypes.STRING } […]

我如何recursion和asynchronous构build一个未知大小的树?

我试图检索我的网站给定的职位上的评论,但我无法build立嵌套的评论,因为node.js的asynchronous性质。 getBlock([], function(){}); function getBlock(comments, callback) { comments.forEach(function(comment) { getChildComments(comment, function(err, children) { if (children) { getBlock(children, callback); } comment.Comments = children; /* not sure how to decide when to be done?*/ callback(null, comments); }); }); } 上面的代码适用于同步代码,但不适用于asynchronous代码,因为我无法确定comments何时包含所有要返回到浏览器的数据。 我试图跟踪recursion调用,并结束时,有0个电话留下来,但这是错误的,有时会根据树结构提前返回。

Sequelize – 从数组批量创build

我有一系列的项目,需要创build它们到数据库。 我需要检查每个插入,如果它成功插入到新的数组(结果)项目+成功=真正的JSON。 如果没有成功创build – 插入到相同的数组之前(结果)的项目+成功= false。 代码如下: create_cards: function (filter_id, is_filter, cards) { var result = []; var curr_card = null; for (var card in cards) { curr_card = this.create( { filter_id: filter_id, template: card.template, state: card.state, question_id: card.question_id || -1, answers: card.answers || -1, description: card.description || -1, correct_answer: card.correct_answer || -1 }).then(function(card) { […]

查询哪里关联在续集?

where子句在内部连接中使用。 我的查询是 SELECT Cou.country_id,cou.country_name, Sta.state_id, Sta.state_name FROM hp_country Cou INNER JOIN hp_state Sta ON Cou.country_id = Sta.hp_country_id WHERE (Cou.country_status=1 AND Sta.state_status=1 AND Cou.country_id=1) AND (Sta.state_name LIKE '%ta%'); 我在续集代码中写的是 hp_country.findAll({ where: { '$hp_state.state_status$': 1 }, include: [ {model: hp_state} ] }) 它产生的错误是: SELECT `hp_country`.`country_id`, `hp_country`.`country_name`, `hp_country`.`country_status`, `hp_country`.`created_date`, `hp_country`.`update_date` FROM `hp_country` AS `hp_country` WHERE `hp_state`.`state_status` = 1; […]

done()完成与Javascript承诺中的catch()完全相同的事情(使用sequelize和bluebird)?

我试图让我的Express应用程序尽可能相似地处理所有请求。 我有一个服务器,处理所有的callback和厄运金字塔是可怕的。 我也很难确保所有的电话都有回应。 所以我正在迁移到基于Promise的系统(sequelize,它利用蓝鸟的承诺库)。 我读过最好总是跟进一个.catch(function(err){ report it }调用。 .done()完成相同的事情? 我的想法(可能是天真的)是,我可以在.done(success, failure)函数中处理所有res.status(x).send(y)调用。 failure抓住一切catch()会(? 在done()函数中发送所有响应是否错误(所有成功消息都success ,所有失败/错误消息failure ? 编辑 – 我发现sequelize使用蓝鸟的诺言库,所以done()已被depricted finally() 。 但是, finally()没有在函数中使用参数,所以似乎我不能将所有数据发送到finally()并在那里处理它。

如何将ORDER BY添加到NodeJS的sequelize方法中

我有一个nodeJS应用程序使用Sequelize访问MySQL数据库。 有两个用户表: user和user_password 如果用户至less更改了密码,则user_password表中的每个用户都有多个条目。 我想通过findUserWithUsername(username)来validation用户,如下所示: async findOne(query = {}, include = [] , attributes = ['id', 'username', 'email'] ) { const user = await db.user.findOne({include: include, where: query, attributes: attributes}); return user; } async findUserWithUsername(username) { const include = [ { model: db.user_password, attributes: ['id','algorithm', 'password', 'salt'], order: 'id desc' } ]; return await this.findOne({username: […]

如何在续集中select个案查询?

我有一个SQL查询: SELECT field1, field2, CASE WHEN field1=1 THEN 'a' ELSE 'b' END AS field3 FROM test 我想用sequelizejs来实现它, const params = { attributes: //DO SELECT CASE, }; yield Model.findAll(params); 谁能帮我? 谢谢。

下划线被删除

Sequelize删除我的外键中的下划线。 Role.belongsToMany(User, { foreignKey: 'user_id', through: UserRole }); 结果在这: Unknown column 'UserRole.UserId' in 'field list' 因为该列名为user_id,而不是UserId。 即使是underscore: true选项设置,它是这样做的。 有没有办法解决这个问题,这是让我疯狂,因为,我不知道我是否做错了或续集。 UserRole.js: module.exports = { attributes: { roleId: { type: Sequelize.INTEGER(11), field: 'role_id', primaryKey: true }, userId: { type: Sequelize.INTEGER(11), field: 'user_id', primaryKey: true } }, associations: function() { UserRole.belongsTo(User, { foreignKey: 'user_id' }); UserRole.hasOne(Role, { foreignKey: […]

Sequelize从多个表中提取数据并将其作为对象传递给EJS

对于Node Js和相关的程序来说是新的。 目前正试图创build一个应用程序上传图片与字幕等,并为用户喜欢和评论(更像Instagram /脸书)。 到目前为止,我的应用程序工作,但现在卡在一个点,当我试图从多个表拉多个值,传递值作为数组中的对象,并呈现在一个新的EJS文件。 下面是代码 app.get('/pages/photos/:id', function (req, res){ //show photos with comments //1. photo with id :id // 2. all comments associated with id :id //likes associated with photo var photoId=req.params.id; var photoData = [] Photos.findOne({ where:{id: photoId}, attributes: ['userId','filename', 'caption', 'createdAt'] }).then(function (rowPhoto){ photoData.photoValues = [] var vals = { photoId:photoId, userId:rowPhoto.userId, […]

在Node / Express中重新加载 – “没有这样的表:main.User”错误

我试图用Sequelize构build一个简单的Node / Express应用程序,但是当我尝试在关系数据库中创build新logging时,出现错误Unhandled rejection SequelizeDatabaseError: SQLITE_ERROR: no such table: main.User 。 基本上,我在Users表中创build一个用户,然后尝试在Addresses表中创build一个相关的Addresses – 用户成功创build,但它创build地址时出现此错误…在哪里得到main前缀从表名? (完整的错误读数在下面)… 首先,这里是我的节目的简介… 我的Sequelize版本是Sequelize [Node: 6.8.1, CLI: 2.4.0, ORM: 3.29.0] ,我使用Sequelize CLI命令sequelize init来设置我的项目的这一部分。 我正在使用SQLite3进行本地开发,并在config/config.json我有开发数据库定义为 "development": { "storage": "dev.sqlite", "dialect": "sqlite" } 我的用户迁移: 'use strict'; module.exports = { up: function(queryInterface, Sequelize) { return queryInterface.createTable('Users', { id: { allowNull: false, autoIncrement: true, primaryKey: true, […]