Questions tagged «sequelize.js»

Sequelize库为Node.js提供了一个ORM(对象关系映射器),完全用JavaScript编写。为MySQL,MariaDB,SQLite,PostgreSQL和SQL Server提供简单的映射。

8
防止Sequelize在执行查询时将SQL输出到控制台?
我具有检索用户个人资料的功能。 app.get('/api/user/profile', function (request, response) { // Create the default error container var error = new Error(); var User = db.User; User.find({ where: { emailAddress: request.user.username} }).then(function(user) { if(!user) { error.status = 500; error.message = "ERROR_INVALID_USER"; error.code = 301; return next(error); } // Build the profile from the user object …

11
Sequelize.js:如何使用迁移和同步
我即将准备好启动我的项目。在启动后,我有很大的计划,数据库结构也将发生变化-现有表中的新列以及新表,以及与现有模型和新模型的新关联。 我还没有接触过Sequelize中的迁移,因为我只有测试数据,所以我不介意在每次数据库更改时都清除掉这些数据。 为此sync force: true,如果我更改了模型定义,则目前我正在运行我的应用程序。这将删除所有表并使它们从头开始。我可以忽略force使它仅创建新表的选项。但是,如果现有的更改,这将无用。 因此,一旦添加迁移,事情如何工作?显然,我不希望删除现有表(其中包含数据),所以这sync force: true是不可能的。在我帮助开发的其他应用程序(Laravel和其他框架)中,作为该应用程序部署过程的一部分,我们运行migration命令来运行所有待处理的迁移。但是在这些应用程序中,第一个迁移具有框架数据库,该数据库处于开发尚处于初期状态的状态-首次发布Alpha版本或其他内容。因此,即使是晚到派对的应用程序实例,也可以通过依次运行所有迁移,一口气掌握速度。 如何在Sequelize中生成这样的“首次迁移”?如果我没有,则该应用程序的新实例可能会没有骨架数据库来运行迁移,或者它将在开始时运行同步,并使所有数据库都处于新状态新表等,但是当它尝试运行迁移时,它们将变得毫无意义,因为它们是在原始数据库的基础上编写的,并且考虑到了每个连续的迭代。 我的思考过程:在每个阶段,初始数据库加上依次进行的每次迁移都应等于(正负数据)数据库, sync force: true运行。这是因为代码中的模型描述描述了数据库结构。因此,也许即使没有迁移表,我们也可以运行同步并将所有迁移标记为完成,即使它们没有运行。这是我需要做的(如何?),还是应该由Sequelize自己做,还是我吠错了树?如果我在正确的区域,那么肯定会存在一种自动生成大部分迁移的好方法,考虑到旧模型(通过提交哈希?甚至每个迁移都可以与提交相关联?),我承认我在想在不可移植的以git为中心的世界中)和新模型。它可以改变结构并生成将数据库从旧版本转换为新版本所需的命令,然后再返回,然后开发人员可以进行必要的调整(删除/转换特定数据等)。 当我使用--init命令运行sequelize二进制文件时,它给了我一个空的迁移目录。然后,当我运行sequelize --migrate它时,我得到一个SequelizeMeta表,里面没有任何东西,没有其他表。显然不是,因为该二进制文件不知道如何引导我的应用程序和加载模型。 我肯定错过了什么。 TLDR:如何设置我的应用程序及其迁移,以便可以更新实时应用程序的各种实例,以及没有旧启动数据库的全新应用程序?

10
如何组织使用续集的节点应用程序?
我正在寻找一个使用序列化ORM的示例nodejs应用程序。 我主要担心的是,如果由于require()依赖关系循环而导致模型之间具有复杂的关系,那么几乎不可能在单独的js文件中定义模型。也许人们在一个非常长的文件中定义了所有模型? 我主要对模型的定义和在整个应用程序中的使用感兴趣。我想验证一下我自己正在做的事情是“好的”做事方式。

13
如何使用sequelize for node更新记录?
我正在使用NodeJS,express,express-resource和Sequelize创建一个RESTful API,该API用于管理存储在MySQL数据库中的数据集。 我试图弄清楚如何使用Sequelize正确更新记录。 我创建一个模型: module.exports = function (sequelize, DataTypes) { return sequelize.define('Locale', { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, locale: { type: DataTypes.STRING, allowNull: false, unique: true, validate: { len: 2 } }, visible: { type: DataTypes.BOOLEAN, defaultValue: 1 } }) } 然后,在资源控制器中,定义一个更新操作。 在这里,我希望能够更新ID与req.params变量匹配的记录。 首先,我建立一个模型,然后使用该updateAttributes方法来更新记录。 const Sequelize …


4
如何在Node.js上使用Sequelize进行联接查询
我正在使用sequelize ORM;一切都很好,很干净,但是在join查询中使用它时却遇到了问题。我有两种模式:用户和帖子。 var User = db.seq.define('User',{ username: { type: db.Sequelize.STRING}, email: { type: db.Sequelize.STRING}, password: { type: db.Sequelize.STRING}, sex : { type: db.Sequelize.INTEGER}, day_birth: { type: db.Sequelize.INTEGER}, month_birth: { type: db.Sequelize.INTEGER}, year_birth: { type: db.Sequelize.INTEGER} }); User.sync().success(function(){ console.log("table created") }).error(function(error){ console.log(err); }) var Post = db.seq.define("Post",{ body: { type: db.Sequelize.TEXT …

6
在“字段列表”中对未知列“ * .createdAt”进行序列化
尝试通过关联获取时,我在“字段列表”中得到了未知列“ userDetails.createdAt”。 findAll无需关联即可正常使用。 我的代码如下: var userDetails = sequelize.define('userDetails', { userId :Sequelize.INTEGER, firstName : Sequelize.STRING, lastName : Sequelize.STRING, birthday : Sequelize.DATE }); var user = sequelize.define('user', { email: Sequelize.STRING, password: Sequelize.STRING }); user.hasOne(userDetails, {foreignKey: 'userId'}); user.findAll({include: [userDetails] }).success(function(user) { console.log(user) });

9
Sequelize.js删除查询?
有没有一种方法可以编写类似于findAll的delete / deleteAll查询? 例如,我想做这样的事情(假设MyModel是一个Sequelize模型...): MyModel.deleteAll({ where: ['some_field != ?', something] }) .on('success', function() { /* ... */ });

4
如何查看Sequelize.js生成的SQL?
我想查看发送到PostgreSQL服务器的SQL命令,因为我需要检查它们是否正确。我特别对表创建命令感兴趣。 例如,ActiveRecord(Ruby)将其SQL语句打印到标准输出。Node.js / ActionHero.js和Sequelize.js也可能吗?

9
序列化,将实体转换为普通对象
我对javascript并不太熟悉,而且令人叹为观止,因为我无法向使用ORM名称Sequelize.js从数据库中获取的对象添加新属性。 为了避免这种情况,我使用此技巧: db.Sensors.findAll({ where: { nodeid: node.nodeid } }).success(function (sensors) { var nodedata = JSON.parse(JSON.stringify(node)); // this is my trick nodedata.sensors = sensors; nodesensors.push(nodedata); response.json(nodesensors); }); 因此,通常如何向对象添加新属性。 如果有帮助,我使用sequelize-postgres版本2.0.x。 更新。console.log(节点): { dataValues: { nodeid: 'NodeId', name: 'NameHere', altname: 'Test9', longname: '', latitude: 30, longitude: -10, networkid: 'NetworkId', farmid: '5', lastheard: Mon …


6
排序或条件对象
通过创建这样的对象 var condition= { where: { LastName:"Doe", FirstName:["John","Jane"], Age:{ gt:18 } } } 并传递进去 Student.findAll(condition) .success(function(students){ }) 它可以像这样漂亮地生成SQL "SELECT * FROM Student WHERE LastName='Doe' AND FirstName in ("John","Jane") AND Age>18" 但是,这都是“ AND”条件,如何通过创建条件对象来生成“ OR”条件?

5
在nodejs中排序findAll排序顺序
我正在尝试通过sequelize从数据库中输出所有对象列表,如下所示,并希望在我在where子句中添加id时对数据进行整理。 exports.getStaticCompanies = function () { return Company.findAll({ where: { id: [46128, 2865, 49569, 1488, 45600, 61991, 1418, 61919, 53326, 61680] }, attributes: ['id', 'logo_version', 'logo_content_type', 'name', 'updated_at'] }); }; 但是问题是渲染后,所有数据按如下进行整理。 46128, 53326, 2865, 1488, 45600, 61680, 49569, 1418, .... 正如我发现的那样,它既没有按ID也没有按名称排序。请帮我解决。

4
对没有列'id'的表进行排序
我有一个表的以下顺序定义: AcademyModule = sequelize.define('academy_module', { academy_id: DataTypes.INTEGER, module_id: DataTypes.INTEGER, module_module_type_id: DataTypes.INTEGER, sort_number: DataTypes.INTEGER, requirements_id: DataTypes.INTEGER }, { freezeTableName: true}); 如您所见id,此表中没有一列。但是,当我尝试插入时,仍尝试以下sql: INSERT INTO `academy_module` (`id`,`academy_id`,`module_id`,`sort_number`) VALUES (DEFAULT,'3',5,1); 我怎样才能禁用id它显然具有的功能?

2
sequelize.sync()如何工作,尤其是force选项?
sequelize.sync()上的force选项有什么作用? sequelize.sync({ force: true }); 具体来说,我有兴趣了解什么力量:错误呢?它不会将模式与数据库同步吗? 是否有任何关于续集的正式文档?我只能在文档中找到示例。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.