我计划为我的桌子制作一个播种机projects
。我用来createMany
在一个查询中插入多个数据(参见下面的代码)。但问题是,它无法识别createMany
并在运行笑话测试后抛出错误。
另一件让我困惑的事情是,我的代码中没有打字稿错误。我还可以使用create
函数创建单个数据。
我已经看过 prisma 文档,但我无法确定我的代码中出了什么问题。有人可以帮我解决一下吗。(评论也会有帮助)。
错误 TS2339:属性“createMany”在类型“ProviderDelegate<RejectOnNotFound |”上不存在 拒绝每次操作 | 未定义>'。
模式棱镜
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = "file:./dev.db"
}
model Provider {
id Int @id @default(autoincrement())
user_id Int
name String
space_key String
api_key String
projects Project[]
created_at DateTime @default(now())
updated_at DateTime @updatedAt
@@unique([user_id, api_key])
}
Run Code Online (Sandbox Code Playgroud)
我的用法
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
...
await prisma.provider.createMany({
data: [ …
Run Code Online (Sandbox Code Playgroud) 如何在prisma中有条件地过滤记录?例如,我有一个变量sortByYear
可以包含undefined
或integer
。
我只是想问一下有没有办法重构下面的实现。我尝试查看他们的文档,但找不到。
let result = [];
if (sortByYear) {
result = await prisma.project.findMany({
where: { provider_id: 50 }
})
} else {
result = await prisma.project.findMany()
}
Run Code Online (Sandbox Code Playgroud)
在 Laravel 中,我们可以通过使用子句来重构它when
,该子句在执行查询之前首先检查变量。Laravel When 子句
我尝试创建 Slack 的块套件构建器,所需的设计实际上很好。但我不知道在哪里可以找到一个按钮,以便我们可以在上面标记某人。
我在这里尝试标记一个名为john的人,但不幸的是它只生成了纯文本,它没有通知该人,也没有变成与预期相同的设计(参见下图结果)查看 游乐场
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "@juan \n\nis a mrkdwn section block"
}
},
.....
]
}
Run Code Online (Sandbox Code Playgroud)
这是结果
我下面有一个工作代码,如果数据不存在则插入数据(但如果存在则不更新)。在下面的实现中,我正在循环upsert
,它工作得很好。
我的问题是,如何获取那些新插入的数据?(排除已经存在的数据)。您知道如何以尽可能短的方式实现这一目标吗?
我做了一些研究,发现了这个可能的 github 解决方案,但我不明白。因为它还返回数据,即使它已经存在。
this.data = await prisma.$transaction(
temp.map((provider) =>
prisma.provider.upsert({
where: {
user_id_api_key: {
user_id: provider.user_id,
api_key: provider.api_key
}
},
create: provider,
update: {}
})
)
)
console.log(this.data) // it still return data even if its already existing
Run Code Online (Sandbox Code Playgroud) 我在该搜索用户下方使用两列进行了查询。但它似乎无法正常工作,我假设它正在查询where
每列中的子句而不是两列中的子句。
有没有办法可以where ~ in
处理两列或更多列?
const users = [
{
user_id: 1,
school_id: 11,
..
},
{
user_id: 2,
school_id: 22
},
..
]
await prisma.user.findMany({
where: {
AND: {
user_id: {
in: users.map(user => user.user_id)
},
school_id: {
in: users.map(user => user.school_id)
}
}
}
})
Run Code Online (Sandbox Code Playgroud)
问题是它不会同时 user_id
搜索和school_id
。相反,它搜索两列中的任意一列。我会请求你们的帮助,或者你们有更好的方法来达到相同的结果。谢谢。
输入是一个数组[Tuesday, Wednesday]
,但它只能存储在一个单元格中。使用此输入我想知道两个日期之间有多少天。
我找到了一个参考,但我不知道如何使其动态,因为它只接受整数工作日。
https://www.extendoffice.com/excel/formulas/excel-count-day-of-week- Between-two-dates.html
SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(start_date&":"&end_date)))=week_day))
有人知道如何实现这一目标吗?
编辑:输入可以是任何格式,只要它只能在一个单元格内