如果我有两个对象,项目和任务与一对多关系相关联
Project.hasMany(Task)
var Pro1 = Project.build({...}).save();
现在,当我在保存新任务后将其设置为一个人时
var task = Task.build({ ... }).save().success(function(t1)){
project.setTasks([t1]).success(function() {
// saved!
假设我有一个联盟实体和一个用户实体,我希望该联盟的经理(用户)是强制性的。如何告诉Sequelize在League.ManagerId列上应该有一个NOTNULL约束
以下是我如何定义我的关联:
League.belongsTo User,{as:'Manager'}您可以指定foreignKey(请参见和)属性:
League.belongsTo(用户、{
作为‘创造者’,
外键:{
名称:'联盟',
allowNull:错误
}
});
我已经到了必须开始使用Sequelize迁移的地步。哎呀!我已经尽了最大的努力让最初的数据集变得有用,但现在是时候让一个男孩成为一个男人,学习在数据库上运行迁移的伟大艺术了
我对这个很陌生,有一个很大的问题。由于代码中的新数据结构设置在migrations文件夹中,而不再是models文件夹中,因此如何为表创建验证和关系?我是否仍可以使用“模型”文件夹进行此操作,或者完全切换到“迁移”文件夹?您应该仅在第一次使用迁移来声明或更改模型和属性。之后,您应该尽可能多地定义带有关联和验证的实例和类方法,
我试图在sequelize中关联3个表
我创建的模型如下
用户模型
var Sequelize = require('sequelize');
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User', {
uuid: {
type: Sequelize.STRING,
primaryKey: true
},
first_name
请使用请求查询参数查询地址表。。
我想查询基于县,州和城市。
以致
Adressses.findall({
where:
{
country: req.query.country,
state: req.query.state,
city: req.query.city //what if user didnot select city?
}
这个问题,我不确定
我正在使用graphql sequelize实现graphql端点。我刚刚创建了一个新的辅助实体,并将其与我的一个主实体相关联,现在正在尝试在获取主实体时包含相关的辅助实体。当我尝试实现该提取时,出现以下错误:
AssertionError ERR_ASSERTION Include support has been removed in favor of dataloader batching
我以前使用的基于解析器的gql端点如下所示:
driver: {
type: MyGQLT
我有一个SQL查询,我想作为Sequelize查询编写
SELECT users.username, players.points, tournaments.date
FROM USERS
JOIN players ON users.id = players.UserId
JOIN Tournaments ON tournaments.id = players.TournamentId
WHERE players.player_checkedin_flag = 1 AND users.role
在Sequelize中添加用户ID作为审核字段的最佳方法是什么?我想捕获创建、更新或删除记录的任何人的用户ID。例如:
{
tableName: 'user_profile',
schema: 'authentication',
timestamps: true,
paranoid: true,
auditUser: '_u',
createdAt: '_c',
updatedAt: '_v',
deletedAt: '_d'
}
。。。或者
{
table
我正在尝试将sequelize升级到v5.8.10,并将sequelize typescript升级到v1.0.0-beta.3。
在新版本中,表名似乎是复数的。如何回归旧的行为
我在这里发布:
没有回答
const dbUser = await User.scope("auth").findOne({ where: { email: "john@domain.com" } });
预期结果:
SELECT "id", "email" FROM "User" AS "User" WHERE (
有一个表“用户”,另一个表是“消息”。消息有两个外键,“authorId”和“receiverId”都不是“users表”的外键。初始化数据库时出现错误
我创建了以下协会:
MessageDb.belongsTo(UserDb, {foreignKey: 'receiverId', as: 'receiver', targetKey: 'id'});
UserDb.hasMany(MessageDb, {foreignKey: 'receiverId', sourceKey: 'id'});
我有一个sequelize表格,如下所示
User.belongsToMany(User, {
as: 'friends',
foreignKey: 'user_id',
through: Users_Friends,
});
User.belongsToMany(User, {
as: 'userFriends',
foreignKey: 'friend_id',
through: Users_Friends,
});
我试图在这个表中插入记录(根据我的理解,朋友关系
我的模型是:
module.exports = function(sequelize, DataTypes) {
var CommitFileStatistic;
return CommitFileStatistic = sequelize.define('CommitFileStatistic', {
additions: {
type: DataTypes.INTEGER,
allowNull: false
},
deletions:
我有一个node.js应用程序,它使用Sequelize。我目前的目标是SQLite,以方便开发人员的安装和测试,但将转移到MySQL进行生产。我使用sequelize cli来创建模型和迁移,所有这些工作都没有任何问题,我已经确认这些表是使用SQLite浏览器工具创建的。我现在遇到的问题是,当运行下面的种子文件(数据库当前为空)时,我收到以下错误
错误:
Unhandled rejection SequelizeUniqueConstraintError: Validation error
a
根据文档Sequalize有一种方法可以获得这样的记录计数
Project.count().then(c => {
console.log("There are " + c + " projects!")
})
但是在我的例子中,我想在include子句中获取记录计数
我有两张桌子
项目
评级
一个项目有很多评分。
评级属于某个项目。
此查询将输出项目以及评级
const dataSet = await db.restaurant_items.findAll({
raw: true,
我是feathersjs的新手,我被一个使用左连接的数据库查询卡住了。我读过续集,但我被卡住了。我有两张桌子
表1:
Table "public.ek_jabatan"
Column | Type | Modifiers
---------
我试图从表modelA中读取fieldA的当前值,以便在modelC的where中进行筛选。
这样行吗?
我尝试:db.modelA.fieldA或['modelA'、'fieldA']或['fieldA],但没有成功
await db.modelA.findAll({
include: [
{
model: db.modelB,
attributes: ["fieldB"],
include: [
{
我有一个Sequelize查询,它包含两个独立的表,我想从每个表中提取一个字段。我还想为属性添加别名,以便为它们提供更好的名称
这很有效。它给我最后两个字段,分别是name和value
const files=wait db.Sheet.findAll({
raw:是的,
属性:[
“工作表名称”,
“工作表文件名”,
“更新地址”,
"主动",,
“化学名称”,
“Load.value”
],
现在这不起作用了:
const files=wait db.Sheet.findAll({
raw
有没有办法使用Sequelize(sequelizejs.com)输出我设置关联时在对象上神奇地创建的所有函数
比如,;我有一个用户模型,我设置了
User.belongtomany(用户,{as:'Friends',通过:'userfriends'})
现在我可以打电话了
User.create({
name: Faker.name.findName()
}).then((user) => {
user.createFriend({
name: Fa
这是一件让我非常恼火的事!我必须为几乎相同的查询编写两个不同的函数
假设我有一个API,它返回与特定的typeId和cityId关联的posts。要获取与类型ID 1或2,或3和城市ID 1相关的所有帖子,我将解析以下内容以进行sequelizefindAll查询:
$or: [{typeId: 1}, {typeId: 2}, {typeId: 3}]
cityId: 1
但是如果我想得到所有的帖子,其中cityId=1和或typeId=1,2,3,4,5,6,7,8,9,10等…
var
当对一个对象进行SequelizeJS查询并包含一个具有“属于多个关联”的关系时,有没有办法使included属性不返回带有结果的关联映射对象
i、 e:
Users.findAll({include:[{model:Role,as:'roles'}]})
//生成以下形式的对象
用户:{
用户名:“测试”,
角色:[
{
名称:“用户”,
UserRoles:{userId:1,roleId:1}/您可以尝试指定属性属性
所以要包括字段,比如你加的a,b,c
attributes: ['a',
如果尝试使用数据库模型中不存在的字段插入记录,会发生什么情况
例如:
const User = db.define('user', {
firstName: Sequelize.STRING,
lastName: Sequelize.STRING
});
User.sync();
let firstUser = User.build(
firstName: 'Foo',
lastName: 'Bar',
baz: 'qux' // not a defined field
)
所以我基本上是将一些查询字符串传递给我的端点用作过滤器,并使用Sequelize
我知道我可以使用where来过滤/查找记录,但我想这样做,如果我不提供查询字符串,它就会被忽略
当前:
const { status } = req.query;
const tickets = await models.Ticket.findAndCountAll({
where: {
status,
},
attributes: [
'id',
'status'
],
我已经从Prisma软件包转到Sequelize,我想知道在模型和迁移方面可能存在的差异
我可以在Prisma中定义一个模式,它会自动为我生成迁移,但在Sequelize中找不到类似的东西
我是否必须为用户手动定义迁移和模型文件等?
迁移和模型文件的示例看起来几乎相同,但在数据库字段方面有一些细微的差异
为什么我需要模型文件?这是一种指定如何读取数据库的方法吗?用户续集cli
您可以使用CLI+生成模型,它会自动为您创建迁移文件
关于模型,是的,你是对的。模型表示数据库中的表
我的代码是:
DB.sequelize.query('SET FOREIGN_KEY_CHECKS = 0').complete(function(err) {
if (err) {
return done(err);
}
DB.sequelize.drop();
return DB.sequelize.sync().complete(function(err) {
if (err) {
return done(err);
}
});
})
我有一个Comment模型,它属于User模型。这就是我创建它的方式:
var log_status = console.log;
var u = require("lodash");
models.sequelize.sync({
force: true,
logging: log_status,
}).then(function() {
return models.Users.bulkCreate([
{ first_name: "John", last_name:
Sequelize.js是否支持原始属性/列
models.OrgTraffic.findAll({
"attributes": ["org_name", "account_id", "account_name", {"raw": "sum(requests)"}], ...})
它似乎适用于order by和group by。实际上,我意识到您可以使用文本函数。在我的例子中,这一个有效:
models.OrgTraffic.findAll({
"attributes": ["org_name
如何使用对象创建具有现有关联的条目
比如说,
User.create({
socialMedia: [{
socialId: 1, //should reference existing social media
userSocialMedia: {
name: 'foo' //should create new "through" entry
}
}],
bank: {
bankId: 1 //should reference exist
我有两个模型。Purchase和PurchaseDetail,它们与
Purchase.hasMany(models.PurchaseDetail)
PurchaseDetail.belongsTo(型号.采购)
我在PurchaseDetail上有afterFind钩子,它可以检查其他模型并向实例添加PurchaseDetail中使用的产品状态的数据,当我直接调用PurchaseDetail.find时,它可以正常工作
但是,当我执行Purchase.find并包含PurchaseDetail
这无疑会令人尴尬,但有人能告诉我为什么下面简单的原始查询中的承诺无法解决问题吗?它的续集是4.37.10
谢谢
'use strict';
const Sequelize = require('sequelize');
const options = {
dialect: 'postgres',
host: 'localhost',
database: 'transitdispatch',
username: 'postgres',
password:
我是graphql的新手,有以下问题:
我正在查询所有客户的照片,但graphql服务器响应在照片对象上为空。
如果我尝试Sequelize日志中的原始SQL语句并在我的SQL客户机中执行,它会给出正确的结果
我想问题出在客户端的graphql中,但我不知道在哪里
到目前为止,我还没有在CustomerPhoto模式中为fieldfiletype添加自定义标量类型,但我认为这不是一个问题
//客户模式
import CustomerPhoto from "./customerPhoto";
我一直在尝试使用魔法函数,但没有找到
我没有在模型上使用别名,但在我假设名称基于我用来创建它们的模型名称而找不到神奇函数后,我尝试将别名添加到我的模型中,但仍然找不到神奇函数,我认为它们是基于别名的
现在我有点迷路了。我如何检查模型的实例来检查神奇的函数是什么
我的模特名字不是简单的单词。一个是DaUser(表是Dau用户)。另一个是DAO组织(表为DAU组织)。因此,我尝试创建一个多对多关系,并用这两个关系集创建了一个新模型DaUserOrg
DaUser.belongsToMany(DaOr
我使用的是Sequelize v4,我正在尝试使用更新单个记录中的单个属性。我不理解“values”对象应该是什么样子的,我也找不到任何关于它的文档
我的假设是{columnName:updatedValue},因此:
Model.update(
{ColumntUpdate:valueToUpdate},
{
其中:{…},
字段:['columnToUpdate']
}
)在示例中,我没有看到他们对模型使用字段。虽然它看起来确实是正确的语法
文档中的示例:
Task.update(
我有一个以UTC时区存储datetime的表。它存储在PostgreSQL中。表中的数据未转换为任何需要的分区。但是,当我使用findAll方法进行查询时,它返回的结果是时区+5而不是-5(这是正确的服务器区域)。我将默认值useuUTC保留为true,而没有设置true或false,因为true是默认值。以下是一个例子:
数据库记录“2020-10-09T03:49:28.652Z”
续集响应“2020-10-09T08:49:28.652Z”
预期响应“2020-10-09T22:49:28
我有一个数组的对象,我创建。现在我的问题是,它是否也能在该块中创建关联
let participant = {
firstname: p.firstName,
lastname: p.lastName,
organisation: p.organisation,
email: p.email,
code: participantInfos
是否可以在列名上加下划线(postgres),但JavaScript getter必须符合语言标准?不直接在列定义中,但您可以查看getter和setter:
尽管此选项要求您手动为每个列定义一个getter和setter,但它不能自动执行。此外,getter和实际列名都将在对象上可用
我认为github上的这个功能有问题,但我现在找不到
实际链接
对于以后发现此问题的任何人,现在都可以明确定义数据库字段的名称:
var User = sequelize.define('user', {
我正在为我的ORM使用SequelizeJS
我有一个“视频”模型。此模型使用“视频”表
如何创建包含时间戳的迁移?我需要定义自己的时间戳列,还是有快捷方式
在/migrations/123412341234中创建视频表.js
'use strict';
module.exports = {
up: function (queryInterface, Sequelize) {
queryInterface.createTable(
'Videos',
{
在Sequelize.js中有没有一种方法可以暂时禁用时间戳,最好是针对一个查询
特别是,我运行的查询如下
MyModel.update({
UserId: 1
}, {
where: {
UserId: 2
}
}).then(...)
我不想让时间戳更新。我确实希望它们能够更新与此上下文无关的任何其他查询
在运行update()之前,我已经尝试过设置MyModel.options.timestamps=false,然后立即将其设置回true,而且,为
我有两个模型,Room和Day,我想把它们联系起来
day.model.js
身份证
事件
日期
room.model.js
身份证
事件
头衔
这两者需要通过eventId属性关联,该属性是第三个模型的主键
我需要在全天实例中包含所有房间实例,因为一天可以有许多房间
我的同事目前的设置如下:
models.Room.relate = {};
// A room can have many days
models.Room.relate.days = {
model: models
嗨,我正在尝试从数据库中获取一个对象数组
模型
质疑
你预计会发生什么?
像这样的物体:
"checklist": [
{checked: true, text: "Shortening"},
{checked:true, text: "Margarine"},
{checked:false, text: "Canned Stewed Tomatoes"},
{checked:true, text: "Onions"}
]
到底发生了什么?
我得到一个字符串
我最近开始尝试使用Sequelize cli进行Sequelize迁移。我注意到,如果迁移脚本抛出错误(使用try-catch块),sequelize cli仍会使用迁移更新SequelizeMeta表,就好像迁移成功一样
捕获错误并防止Sequelize在“向上”时将迁移输入SequelizeMeta表,以及相反地防止在“向下”脚本失败时删除迁移的最佳方法是什么?使用事务实现回滚由于以下异常而导致的所有迁移更改:
up: (queryInterface) => queryInte
在sequelize where表达式中,我想知道当字符串有字段作为子字符串时如何匹配。
换句话说,如何表示:string[Op.substring]字段
请注意,与我所寻找的相反的是:
{field:{[Op.substring]:string}
在我更新了Sequelize typescript和Sequelize到版本5之后。若我试图从数据库中读取任何内容,我会不断收到错误“ColumnCreateDat不存在”。我的数据库和模型中没有这样的列。
我正在使用typescript实验装饰器
import {Table, Column, DataType, PrimaryKey} from "sequelize-typescript";
import {Model} from "sequelize"
我尝试用Sequelize向MySQL添加master和details对象,结果出现如下错误:
TypeError:self.$expandAttributes不是函数
at选项(/Desktop/git/ss portal server/node_modules/sequelize/lib/model.js:243:10)
至少包括(/Desktop/git/ss portal server/node_modules/sequelize/lib/model.js:300:5)
来自的参考;
我需要将下面的MySQL查询转换为SequelizeJS查询
WHERE createdAt < now() - interval 5 hour
WHERE createdAt
要计算updatedAt列,然后将其与where子句中的当前日期进行比较吗
const query = {
where: {
[sequalize.fn('ADDDATE', sequalize.col('updatedAt'), 5)]:
{
$lt: sequalize.fn('NOW'),
},
},
force: true,
};
我将把播种机历史记录存储到sequelizedata表中。
有没有办法运行挂起的播种机
现在,关于sequelize--help只有:
db:seed-运行特定的播种机
db:seed:all-运行所有播种机
两者都不起作用
我通过从上一个播种器文件中删除done参数解决了这个问题
“严格使用”
module.exports={
up:async(查询接口、续集、完成)=>{
返回queryInterface.bulkInsert(
“表名称”,
数据,
{}
)
},
向下:(查询接口,
在Sequelize.js中,如何通过表更新1-N或N-M关系中的属性?我试图查找文档,但找不到任何文档。如果用户属于多个项目,并且该项目有一个注册列,您可以执行以下操作
project.addUser(user, { enrolled: new Date() });
如果已经设置了用户和项目之间的关系,那么这也应该起作用,在这种情况下,将更新联接表
文档位于末尾。是否有一种方法可以在模型实例的方法中实现这一点,如Project.update(…)或User.upsert(…)?我不确定您的意
我需要获取由findAll调用生成的sql查询,最好是同步(w/o promise)。它不是用于日志记录的,我也不希望它用于所有查询,只用于一个特定的查询,所以设置一个日志记录程序不会有帮助
如何做到这一点?您可以将特定的日志函数设置为单个查询。你可能可以同步地做任何你需要的事情
尝试以下方法:
//sample log function
function notOnlyALogger(msg){
console.log('hey, Im a single log');
//do w
我已经使用graphql、nodejs、express和sequelize与mysql构建了一个小代码,但是我还没有找到graphql的魔力。我会使用sequelize cli和sequelize model:create等创建模型,并动态生成模式和类型,如下所示:
var types = generateModelTypes([db['User'], db['Acesso']])
var schema = generateSchema({User: db['User'], Acesso: db
如何在下表的gpa列中指定介于0.0和4.0之间的范围
const Student = db.define('student', {
firstname: {
type: Sequelize.STRING,
validate: {
notEmpty: true,
},
allowNull: false,
},
lastname: {
type: Sequeli
1 2 3 4 5 6 ...
下一页 最后一页 共 15 页