Code: Select all
const playlist = {
playlist_idea_uri: uri.toString(),
type: 'master'
}
const insertedPlaylistIdResponse = await db
.insertInto('playlist')
.values(playlist)
.onConflict((oc) => oc.doNothing())
.returning('id')
.executeTakeFirst()
let songs = masterPlaylist.songs.map((song) => {
return {
track_name: song.trackName,
track_mb_id: song.trackMbId,
album_artwork_ref: song.albumArtwork?.ref.toString(),
created_at: song.createdAt
}
})
const insertedSongIdsResponse = await db
.insertInto('song')
.values(songs)
.onConflict((oc) => oc.doNothing())
.returning('id')
.execute()
var position = 0
if (insertedPlaylistIdResponse?.id) {
const playlistItems = insertedSongIdsResponse.map((songIdResponse) => {
if (this !== undefined) {
return undefined
} else {
const newPosition = this + 1
return {
playlist_id: insertedPlaylistIdResponse.id,
song_id: songIdResponse.id,
position: newPosition
}
}
}, position)
await db
.insertInto('playlist_item')
.values(playlistItems)
.execute()
}
Code: Select all
const playlistItems = insertedSongIdsResponse.map((songIdResponse) => {
if (this !== undefined) {
return undefined
} else {
const newPosition = this + 1
return {
playlist_id: insertedPlaylistIdResponse.id,
song_id: songIdResponse.id,
position: newPosition
}
}
}, position)
Code: Select all
export interface PlaylistItemTable {
id: Generated
playlist_id: number
song_id: number
position: number
}
Die Sache, auf die man sich konzentrieren muss, ist die Position Variable und ob ich den Parameter thisArg des Array.Map (Parameter des Array.Maps (verwenden kann ) Funktion Als eine Art Iterator, dass es jedes Mal, wenn es kartiert wird, auf der Grundlage der Art und Weise, wie ich es verwendet habe, möglich ist, oder funktioniert es nicht? Seien Sie undefiniert, aber ich bin mir nicht sicher, warum ich genau das überprüft habe, bevor ich versucht habe, es zu verwenden.
Jede Hilfe wird geschätzt!>