我有一个使用ORM的代码库,希望转到ORM。有没有办法重用在sequelize with Objectionjs中启动的事务?这样我就可以迭代迁移,而不必一次重写所有内容。如果您可以获得由Sequelize启动的knex事务,您可以将其传递给objective.js Model.query(trx)
如果Sequelize不在后台使用knex事务,那么如果您可以获得Sequelize事务使用的原始数据库连接,那么您可以使用.connection(rawConnection)查询生成器方法来定义用
我正试图通过邮递员测试我的数据库中的投递日期
我的模型设置如下。我从Sequelize中解构了{Date},因此它只显示日期
eventDate: {
type: DATE,
},
我已经通过邮递员以不同的格式发布了日期,它们都返回空值。我不完全确定模型中是否还需要定义其他内容
"eventDate": "2020-05-30 02:00:00"
"eventDate": "2020-03-14T15:32:42.782
男人的支持很差
我正在尝试获取所有行并包含另一个表,其中where子句是可选的
给出下表(我知道它有错误,只是为了演示)
我想获取所有事件,包括它们的发生,而occurrence.date>现在或事件根本没有发生
到目前为止,我已经尝试了几种方法:
const query = {
where: {},
include: {
model: Occurrence,
where: {
date: {
[
我想在offerset表中添加offerzone表作为外键。使用sequelize和below模型是用angularjs编写的
module.exports = function(sequelize, DataTypes) {
let offerzone = sequelize.define('offerzone', {
title: DataTypes.STRING,
moid: DataTypes.INTEGER,
seoTandC: DataTypes.STRING,
isActive:
我必须创建一个动态sequelize查询,它可以有1到3个条件,第一个是like查询,第二个是完全匹配的。用户可以选择任何组合。我似乎无法设置它的where条件以使其正常工作。在使用它之后,它工作了
我使用了typescript,所以如果不使用,请进行调整
let whereClause = {};
if (searchCriteria.documentName) {
whereClause['documentName'] = {
$like: '%' + searchCriter
我正在尝试创建通过数据分页的功能,但我不确定需要将分页变量放置在何处
以下是我的模式中的内容:
const Query = new GraphQLObjectType({
name: 'Query',
description: 'This is a root Query',
fields: () => {
return {
allPosts: {
type: new GraphQLList(Post),
args: {
我所看到的所有示例(包括文档)都建议按关联进行过滤应使用以下语法
[contrived exampled]
User.findAndCountAll({
include: [
{
model: models.Task,
as: 'tasks',
where: {
status: 'complete'
},
},
],
})
如果我想知道列是否以sequelize的字符串“myString”开头,我可以这样查询:
...
where: {
column: { [Op.like]: `${myString}%` }
}
等效的SQL查询应该是:。。。其中像{myString}%这样的列
但是,我想知道变量是否以列中的值开头,反之亦然。等价的查询是:。。。其中{myString}类似concat(列“%”)的等价查询是:。。。其他列如concat(列“%”)在哪里?
where: {
column: {
这似乎创建了一列roomId
Room.hasMany(Room.);
Room.belongsTo(Room);
Room.hasMany(Room);
Room.belongsTo(Room, {as:'parent'});
这将创建列parentId和roomId
Room.hasMany(Room.);
Room.belongsTo(Room);
Room.hasMany(Room);
Room.belongsTo(Room, {as:'parent'});
这会引发一个错误:
我定义的模型与文档中的以下示例类似:
当我尝试使用Post.create方法一次性创建一篇文章及其标记时,文章、标记和“through”表行都会被创建,只是taggable字段没有在“through”表上设置,因此关联没有得到正确定义
如果我分别创建标记和帖子,那么我可以使用post.addTags方法关联标记,在这种情况下,一切正常,并且taggable字段设置为post.belongTomany关联范围内的定义
我的问题是,我是不是没有将正确的选项传递给Post.create方法,还是使用
我正在尝试将where like子句添加到节点Sequelize findAll中,使其行为类似于sql查询select*from myData where name,如“%Bob%”,代码如下
let data: Array<any> = await MyDataSequelizeAccess.findAll({
where: {
name: {
$like: `%Bob%`
}
}
});
let data:Array我的语法看起来正确
我也
是否可以创建一个批量创建,该批量创建在任何行失败时不会失败,并返回所有插入数据库失败的行。
例句:我正在向数据库中插入1000个用户,其中10个失败,我可以得到这10个失败用户的详细信息以及失败的原因吗
我正在使用mariadb。检查我认为您需要一个.catch块来处理错误。它不同于.error块。在页面底部有一个例子,你说插入失败是什么意思?sequelize模型验证未通过或违反约束?@slideshowp2如果模型验证失败
我正在使用无服务器nodejs创建restfullapi后端。通过API,我使用Sequelize ORM连接到RDS实例(mySQL数据库)
我的想法是要求将所有模型放入一个文件中,并使用sequelize.sync()一次同步所有表,但我遇到了一个问题
每当我第一次在空数据库上使用API时,尽管sequelize.sync()被调用,但只创建了一个表,rest都不会!因此,我必须使用迁移来创建所有表,然后同步无论如何都可以工作(因为它是一种创建表的方式,如果不存在的话方式)
有什么建议吗?我
一段时间以来,我一直在努力解决这个问题。我了解到,当试图建立多对多关联时,hasMany不是正确的方法。我有两个表来创建以下关联User和Follower(目前这个名称很糟糕)
追随者
const follower = (sequelize, DataTypes) => {
const Follower = sequelize.define('follower', {
follower_id: {
type: DataTypes.INTEGER,
如果我正在设计一个包含以下字段的表
第一列,第二列,第三列,我希望组合(第一列:第二列)是唯一的,我将执行以下操作:
column_one: { type: DataTypes.INTEGER, unique: 'composite_one'},
column_one: { type: DataTypes.INTEGER, unique: 'composite_one'},
column_three: { type: DataTypes.INTEGER}
如果我需要两个唯一的组合,都包括一个字
我有一个地址模型(Sequelize),声明方式如下:
var address = sequelize.define("address", {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
coordinates: {
type: DataTypes.GEOMETRY,
allowNull: fa
我正在使用sequelize ORM。我有一个表格模型,其中我们通过paranoid:true启用了软删除
问题:是否有方法进行upsert,以便在对象已存在于表中但被软删除时,只清除deletedAt列
示例设置:model.js
const Sequelize = require('sequelize')
const sequelize = new Sequelize(
dbName,
username,
password,
{
host,
dialect:
我想为每个订单生成唯一的订单号。我正在尝试将创建的订单id嵌套在订单号内
sequelize中有中描述的挂钩。
可以使用这些挂钩中的任何一个吗?
我使用beforeCreate()和beforeUpdate()在保存之前对密码进行哈希运算。
'use strict';
module.exports = (sequelize, DataTypes) => {
const Order = sequelize.define('Order', {
buyer_id: DataTypes
如何筛选sequelize上的子(关联)表或父表
我想按子表的创建日期选择数据,但若父表并没有子表,我想按父表的创建日期选择
所以我需要过滤器来比较父字段和子字段
例如:
有没有一种方法可以在不使用文本的情况下使用sequelize执行以下查询
SELECT * FROM owner, car
WHERE (car.owner_id IS NULL AND car.created_at=NOW())
OR (car.owner_id IS NOT NULL AND owner.created_a
在Github或NPM上似乎找不到任何相关内容。有人知道《雪花续集》的任何库/驱动程序吗 没有,我看到你在github上请求了一个驱动程序没有,我看到你在github上请求了一个驱动程序
我需要在编写解析器函数处理graphql过滤器的建议。过滤器支持eq、ne、like、contains和not like运算符
模式:
GraphQL查询:
解析程序:
使用的技术:
阿波罗服务器
快车
续集
PostgreSQL
如何用[Sequelize.Op.operator]替换筛选器中的运算符?我尝试在config.json中使用运算符别名,但没有任何效果。非常感谢您的帮助。您可以使用括号符号访问Op上的正确属性。大概是这样的:
function transformFilter (
我正在使用流类型的和续集^4.44.3。它抱怨是因为模型没有参数。但这似乎是使用Sequelize创建模型的标准方法,那么我做错了什么
我们走吧
如您所见,模型类定义为:
class Model<TAttributes, TInitAttributes = TAttributes, TPlainAttributes = TAttributes>
现在我们可以使用定义属性的类型,并将其作为类型参数传递到Model类中,以定义我们的模型:
class Conversation exte
我试图使用sequelize v6对嵌套hasMany关系中的列的值求和。下面的代码对所有嵌套行求和,而不仅仅是对属于父记录的行求和
const StockOrders = await models.StockOrder.findAndCountAll({
limit: limit,
offset: offset,
order: [[orderBy, order]],
include:
我需要在两个不同的表中进行查询,其中一个表中记录了某个用户的购买意图,另一个表中记录了用户在平台上注册时保存在base64中的化身,尽管严格遵守了文档规定,但这并没有返回数据,下面我将发送代码片段,如果有人能帮助理解我的错误所在,我将不胜感激
const dadosusers = conecao.define('usuarios', {
nomecompleto: {
type: sequelize.STRING,
},
nomeusuario: {
type:
我试图让Sequalized生成这样的查询:
SELECT
"Customers"."id",
(SELECT SUM("Orders"."amount") FROM "Orders"
WHERE "Orders"."CustomerId" = "Customers"."id") AS "totalAmount",
"Customer"."lastName" AS "Customer.lastName",
"Customer"."firstName"
嗨续集专家
我想问一下,在使用方法.create(…)时如何处理错误。我在和中找到了有关如何处理.build()和findOrCreate()方法错误的帖子,但没有找到create()方法的帖子
非常感谢您的评论
注:
我使用的是sequelize v3.1.0和冗长的v1.11.0,sequelize中的所有异步操作都返回一个
promise是一个包含一些方法的对象,这些方法将根据异步操作是否成功而被调用
Model.create/findOrCreate/update/whatever.th
假设我们有三种模型:
书
章节
段落
以下是他们的协会:
书籍有许多章节
章节有许多段落
书籍有许多段落,通过章节
是否可以定义与Sequelize的“有很多,通过”关系?如果是,怎么做?
以下是书籍、章节和段落的基本模型:
// Book model
const Book = sequelize.define('Book', {
id: {
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true
我使用的是Sequelize Mock,基于我的模型,我没想到会有id属性或时间戳有没有办法抑制它们
mock.js
var UserMock = DBConnectionMock.define('users', {
'Property1': 5,
'Property2': 10,
'Property3': 15,
'Property4': 25
})
// From there we can start using it like a normal mode
我试图在bulkupdate之前创建一个钩子,并获取字段的新值和以前的值。我尝试在模型上使用.reload()和\u previousDataValues,但它们只在实例上工作,而不能批量创建和更新(我使用批量更新)。是否有一种方法可以使用beforeBulkUpdatehook获取字段的上一个值
beforeBulkUpdate: (person) => {
console.log(person.name) // 'John' (new name)
Person.findOne(
基于您的问题,如何使用$like的示例:
sequelize.query('(..) WHERE LOWER(u.NOMBRE) LIKE "LOWER(:find)%" AND u.ACTIVO = 1 ', {replacements: {find: req.params.usuario, id: req.session.passport.user}, type: sequelize.QueryTypes.SELECT})
请将您的问题翻译成英语或使用。非英语内容的St
在Sequelize v5或更早版本中,可以使用Sequelize.import函数从文件加载模型
import Sequelize from 'sequelize';
let sequelize = new Sequelize(...);
let db = {};
arrayOfFiles.forEach(function (file) {
let model = sequelize['import'](file);
db[model.name] = model;
});
将从v6
我想用sequelize typescript创建相关实体,特别是一个有几个人(员工)的公司。创建公司效果很好,但创建员工却没有达到我的预期:
const company = new Company({name: 'Test', ...});
const person = new Person({firstname: 'tester', ... , company: company});
未将人员链接到公司,但人员到公司的外键设置为空。你知道为什么吗
以下是我的模型的相关部分:
@Table
我有一个Sequelize迁移脚本,其中包含这段代码
const [recipeCopies, ingredientCopies] = await Promise.all([
queryInterface.bulkInsert('recipe', recipes, {
returning: true,
}),
queryInterface.bulkInsert('ingredient', ingredients, {
returning: true,
}),
])
我意识到我的数据库使用了错误的排序规则。我需要将其更改为以下内容(更改为collate部分)
const sequelize=新的sequelize(数据库、用户、密码、{
主办
方言,
定义:{
校对:“utf8mb4\u-bin”
}
});
我已经查看了Sequelize文档,但是那里的迁移示例是最琐碎的!我找不到任何数据库范围的更改
有人能给我指一下正确的方向吗
如果在模型中使用belongsTo和hasMany,则通过CamelCase生成belongsTo的foreignkey
User.belongsTo(Group) -> foreignKey will be 'groupId'
User.hasMany(Device)
User.findAll({
attributes: ['id'],
include: [Group, Device]
});
如果不使用User.hasMany(设备)用户外键。belongsTo
我希望在本地测试aws sam时使用本地mysql数据库,在部署它时使用我的aurora数据库。我将sequelize与配置文件一起用作ORM。此配置文件具有用于开发、测试和生产的不同mysql设置。理想情况下,我希望将其设置为本地计算机上的dev,并在其上载时设置为testing。是否有一种方法可以做到这一点,使其自动切换到相关配置?当使用sam在本地运行应用程序时,有一个名为AWS\u sam\u LOCAL的环境变量集
听起来您需要编写一个简单的函数,根据您是在本地运行还是部署的,来获得正
在Sequelize中,如果我有一个简单的父子关系,我可以设置foreignKey列而不设置整个对象:
Chapter.belongsTo(Book);
// this works, but I had to query the DB for the 'book' object
return Chapter.create({title: 'The Title'}).then(function(chapter) {
return chapter.setBook(book);
}
上面生成了
我的应用程序中有一个功能,可以作为博客文章的活动提要(类似于Tumblr)。在这个页面的路径中,我的主要查询是在我的blog post表上,我将包含额外元信息和注释的表加入到这个表中,以获得每个blog post的一张功能齐全的卡片。这些表格来自我的分类(对文章进行分类)、主题(感兴趣的主题)、附加的文件(文件/图像)和评论(评论文章)表格
通过我当前的查询,我可以毫无问题地连接所有这些表,但是我遇到了一个问题,我的where子句与博客文章上的父查询关联。当文件和注释表连接在一起时,会出现一个子
我试图在创建记录和用户更新密码时为用户散列密码。在创作上,我可以做一些像
User.beforeCreate((user, options) => {
user.password = encryptPassword(user.password)
})
这将很容易执行和散列新用户的密码。但是我在更新密码时遇到了一个问题。如果我这么做的话
User.beforeUpdate((user, options) => {
user.password = encryptPassword
指的是说有一个函数-它就在那里-名为showAllSchemas
我用SQLite3数据库实现了它,如下所示:
function showTables () {
sequelize.showAllTables().then(result => console.log(result))
}
但通过执行它可以说
TypeError: sequelize.showAllTables is not a function
我很困惑。有什么想法吗
顺便说一句:一般来说,我也有这个解决方案,但它
嗨,我有下面的index.js
var fs = require('fs');
var path = require('path');
var Sequelize = require('sequelize');
var CONFIG = require('../config/config');
var sequelize = new Sequelize(CONFIG.database, CONFIG.user, CONFIG.password, {
host: CONFIG.host,
我想对SequeElize对象实例进行一个小的属性转换,模型是否支持自定义序列化器/反序列化器
例如,如果我在数据库中的属性中存储一个csv字符串,例如latLng:“40,40”,我想将其反序列化到对象中的数组[40,40],反之亦然,则在保存模型时
因此,我想为特定属性设置自定义序列化器/反序列化器。至少会起到一些作用
但是,它只在列类型级别提供不同的反序列化程序,而不是在属性级别。这意味着您只能在db中为每种类型定义一个反序列化器(一个用于VARCHAR,一个用于INT等)
我在下面列出了一个关系,一家公司有多个分支机构:
index.js:
'use strict';
var fs = require('fs');
var path = require('path');
var Sequelize = require('sequelize');
var basename = path.basename(module.filename);
var env = process.env.NODE_ENV || 'developme
我有两个相关的表,我想在这些表上添加种子。用户播种机工作正常,并且
在我的第二个种子文件中,我查询所有用户,然后将每个用户附加到users\u信息表中。这是我的密码
var chance = require('chance').Chance();
const User = require('../models/User');
module.exports = {
up: function (queryInterface, Sequelize) {
User.findAll()
我需要一种方法告诉Sequelize跳过生成的插入查询中的model字段。
如何做到这一点
早上好,我一直在尝试解决一个问题,但我没有足够的sequelize经验来知道是否有解决方案,所以我的问题是:
我有一个名为Order的模型,另一个名为Service的模型,还有8个名为“orderAttributeA”、“orderAttributeB”、“orderAttributeC”的模型
我的订单模型如下所示:
module.exports = (sequelize, DataTypes) => {
const {Sequelize} = sequelize;
// Learn m
我正在尝试学习如何使用Sequelize,我对ORMs还不熟悉,关联的概念让我很困惑,它让我考虑回到SQL
我有一个Artists表和一个Genres表。一个艺术家可以在多个流派中演奏,而流派可以由多个艺术家演奏。这是一种多对多的关系。在我的SQL模型中,我有一个assoc\u artists\u genres表,如果id为2的艺术家在genres3和5中播放,我会在assoc表中插入值(2,3)和(2,5)。简单
但对于Sequelize,我感到困惑。根据,这样做的方法是在两种模型中实现bel
我无法在sequelize模型中访问this.getDataValue,但它在文档中说我们可以访问它,我使用的是sequelize v5。
我不知道我必须做什么,但我已经想出了很多事情
module.exports = (sequelize, DataTypes) => {
var User = sequelize.define('User', {
email: DataTypes.STRING,
name: DataTypes.STRING,
password
续编代码
const{
续集,
模型
数据类型
}=需要(“续集”);
const sequelize=新的sequelize({
方言:“postgres”,
数据库:dbCredentials.database,
用户名:dbCredentials.user,
密码:dbCredentials.password,
端口:dbCredentials.port
});
类公司扩展模型{}
Company.init({
身份证:{
primaryKey:没错,
类型:DataTypes.UUIDV
我一直在尝试添加第二组表来更新数据库,同时使用sequelize。在DB中创建的第一组表没有任何问题。迁移和播种进行得非常顺利
但是,当我尝试用另外两个表更新数据库时,即使在cli中我没有收到任何错误,但是当我签入DB时,新表不在那里。
取消播种也不起作用
我想知道我是否遗漏了任何步骤
任何建议都会非常有用您是否检查了数据库中的sequelize元表?您试图添加的表是否已列出?如果是这样,请删除它们,看看会发生什么。不,即使在元表中,表也没有列出,我在迁移和种子设定时甚至没有收到任何错误。我们需
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 15 页