Articles of sequelize.js

续集:更新模型及其关联

我有以下表格: Event Tasks 和下面的关联 Event.hasMany(models.Tasks, { as: 'tasks', foreignKey: 'event_id' }) 我正在使用下面的代码来更新一个Event和一个Tasks数组 db.Event.findOne({ where: { id: eventToUpdate.id }, include: [{ model: db.Tasks, as: 'tasks', }] }).then((existingEvent) => { // Loop through existingEvent attributes and existingEvent.dataValues.tasks and // updated the attributes } 但是,当我更新它时: db.Event.update(existingEvent, { where: { id: existingEvent.id } }) .then((updatedEvent) => { console.log(updatedEvent) }).catch((error) […]

SequelizeInstance对象不在Express Handlebars视图中呈现(NodeJS,Express)

使用NodeJS,Express和Sequilize, 当我用res.render()调用实际数据实例值的时候,我正在渲染视图[对象SequelizeInstance:Todo],但是当被.send调用时(参见下面的注释行),数据实例值被发送到视图。 exports.test_todo_view = function(req, res) { return Todo .findAll({ //attributes: ['id'] //select fields }) //.then((todos) => res.status(200).send(todos)) .then((todos) => res.render('test/test_view', {layout: 'ca_layout.handlebars', test_data: todos})) .catch((error) => res.status(400).send(error)); } 输出是数据库中每个条目的[object SequelizeInstance:Todo]。 任何人都可以build议吗? 它工作,即我可以看到数据 – [{“id”:1,“title”:“fasdfsd”,“createdAt”:“2017-11-15”,…]当我使用.send(todos)如图所示。 我正在使用以下来调用视图。 app.get('/test/view', authCarePlan.test_todo_view); 我的.handlebars文件看起来像这样 <div>test_data:{{test_data}}</div> 我希望查询输出通过test_data

如何在ng-repeat angularjs中传递多重$ scope值?

这是我的JSON数据: { "seendata": { "count": 2, "rows": [ { "id": 8, "contactCount": 2, "group": { "id": 7, "groupname": "group1", "createdAt": "2017-11-16T10:53:12.000Z", "updatedAt": "2017-11-16T10:53:12.000Z" } } ] }, "alldata": [ { "id": 7, "groupname": "group1", "createdAt": "2017-11-16T10:53:12.000Z", "updatedAt": "2017-11-16T10:53:12.000Z" }, { "id": 8, "groupname": "group2", "createdAt": "2017-11-16T10:54:41.000Z", "updatedAt": "2017-11-16T10:54:41.000Z" } ] } 我的api代码: exports.getNewGroup = function […]

Postgres + Sequelize:如何读取函数结果?

我有一个函数payment_summary()如下: CREATE OR REPLACE FUNCTION payment_summary() RETURNS SETOF PAYMENT_SUMMARY_TYPE LANGUAGE plpgsql AS $$ DECLARE payment_sum payment_summary_type%ROWTYPE; BEGIN FOR payment_sum IN SELECT pay.application_no, project.title, pay.payment_rec, customer.cust_name, project.estimated_cost, (project.estimated_cost – pay.payment_rec) AS outstanding_amt FROM project INNER JOIN customer ON project.customer_cust_id = customer.cust_id INNER JOIN (SELECT project.application_no, sum(payment.amount) AS payment_rec FROM payment INNER JOIN project ON payment.project_id = […]

在findAll中关联计数关联

假设你有一个队列表,agent_queues和代理表。 一个代理可以在许多队列中,一个队列可以有许多代理。 现在让我们假设你正在试图获得队列列表和这些队列中的代理数量。 我希望像下面这样的工作: queues.findAll({ include: ['agentQueues'], group: ['queues.name', 'queues.matcher', 'queues.id'], attributes: [[Sequelize.fn('count', Sequelize.col('agentQueues.id')), 'agentCount']] }) 相反,它会产生如下内容: SELECT "queues".* FROM (SELECT "queues"."name", "queues"."matcher", "queues"."id", count("agentQueues"."queueId") AS "agentCount" FROM "queues" AS "queues" GROUP BY "name", "matcher", "id" ) AS "queues" LEFT OUTER JOIN "agent_queues" AS "agentQueues" ON "queues"."id" = "agentQueues"."queueId"; 如果group by和count在子查询中,而不是主查询。 我在这里做错了什么? 一个理想的查询将如下所示: SELECT name, […]

用SQLite3进行unit testing

我正在编写unit testing,并用他的inmemory模式使用SQLite3。 我这样做,因为我需要是每个testing新的数据库,所以我可以并行运行testing,而不会相互影响。 但是,这越来越慢,更多的testing,我有。 是否有任何优化,我可以用sqlite3,另一个更好的工作stream程(如一个好的嘲笑库)或另一个解决scheme做这个问题? 我需要运行原始查询。 目前我使用knexjs,但是这与所有的数据访问库有关。

有没有cron工作在续集js?

有没有在sequelize.js的特定时间段后实现删除logging的方法? 我在文档中找不到类似cron-jobs的东西,但是我偶然发现了一些我认为可能是解决scheme的hooks ,但我不确定… 我的目标是拥有超过x分钟/小时/等的logging。 自动删除

处理promise.reject尝试catch或promise.catch

我对承诺的理解并不完美。 所以我不确定哪个代码是正确的方式来处理错误和exception情况。 请帮我写正确的代码。 1。 尝试 – 赶上续集者的诺言 async function doGetAdminList(adminName) { let adminList; try { adminList = await sequelize.query( sqls.GET_ADMIN_LIST, { replacements: { adminName: adminName }, type: sequelize.QueryTypes.SELECT } ); } catch (e) { return Promise.reject({status:500, message: "SQL Error" }); } if (!adminList || !Object.keys(adminList).length) { log.info('\nadminList not found :\n'); return Promise.reject({status:400, message: 'adminList not […]

如何使用Node.js和Sequelize设置基于angular色的身份validationAPI?

Node.JS API使用sequelize作为orm 目前我正在使用node.js中的api 。 我正在寻找一种合适的方式来整合基于angular色的authentication 。 我有一个反应Web应用程序托pipe在Heroku.com是为我们的客户购买我们的产品的意思。 (预订pipe理系统)。 除了networking应用程序,我们也有一个iOS和Android应用程序,这是为每个客户的客户。 APIlogin应该如下工作: 作为客户的用户不能login到Web应用程序。 作为员工的用户不能login到移动应用程序。 MySQL数据库devise: 解释数据库devise: 用户既可以是员工也可以是客户。 每个员工属于一个组。 (想想营销,销售等) 每个组都有特定的权限。 (例如,销售可以查看平均收入) 同样的原则 重要提示:未来的模型将包含一个额外的表格,将包含公司特定的组。 题 我将如何使用sequelize & node.js来实现这个? 我将如何检查angular色/帐户types? (客户||员工) 我应该在数据库中预定义组吗? (像CEO这样的默认)

具有Sequelize和Typescript的外键

鉴于这2个Sequelize模型: export class Users extends Model<Users> { @HasMany(() => UserRoles) @Column({ primaryKey: true, allowNull: false, unique: true }) UserId: string; @Column({ allowNull: false, unique: true }) Email: string; } export class UserRoles extends Model<UserRoles> { @ForeignKey(() => Users) @Column({ primaryKey: true, allowNull: false, unique: true }) UserId: string; @Column({ allowNull: false }) RoleId: number; } […]