gpt4 book ai didi

javascript - 在 Redux ORM QuerySet 上执行映射和过滤时出现问题

转载 作者:行者123 更新时间:2023-12-02 13:44:33 24 4
gpt4 key购买 nike

我正在做 redux-orm 的教程 here我需要在测试中的 QuerySet 实例上调用 map

存储库中的原始测试是 here

这就是我创建Todo的方式:

const todoTags = 'testing,nice,cool'
const user = session.User.first()
const userId = user.getId()

const action = {
type: CREATE_TODO,
payload: {
text: todoText,
tags: todoTags,
user: userId
}
}

const { Todo, Tag, User } = applyActionAndGetNextSession(schema, state, action)

我的代码如下所示:

const newTodo = Todo.last()
console.log(newTodo.tags.forEach, newTodo.tags.map)
console.log('Print all tags')
newTodo.tags.forEach(tag => {
console.log('Prints a tag')
console.log(tag)
})

newTodo.tags.map(tag => {
console.log('Prints a tag 2')
console.log(tag)
return tag
})

expect(newTodo.text).toEqual(todoText)
expect(newTodo.user.getId()).toEqual(userId)
expect(newTodo.done).toBeFalsy()
const newTodoTags = newTodo.tags.map(tag => tag.name)
console.log(newTodoTags)
expect(newTodoTags).toEqual(['testing','nice','cool'])

Tag 模型如下所示:

Tag.backend = {
idAttribute: 'name'
}

我可以使用该模型检索名称,这些名称恰好是该模型的 ids

newTodo.tags.idArr

这是很hacky且 Not Acceptable 。

测试失败,这是我的控制台输出

console.log(newTodo.tags)

//OUTPUT
QuerySet {
...
idArr: ['testing', 'nice', 'cool']
...
}

console.log(newTodo.tags.forEach, newTodo.tags.map)

//OUTPUT
[ Function forEach] [Function map]

console.log(newTodo.tags.toRefArray())

//OUTPUT
[undefined, undefined, undefined]

console.log('Print all tags')
newTodo.tags.forEach(tag => {
console.log('Prints a tag')
console.log(tag)
})

newTodo.tags.map(tag => {
console.log('Prints a tag 2')
console.log(tag)
return tag
})

//OUTPUT
Prints all tags

console.log(newTodo.tags.withModels)

//Output is a QuerySet

newTodo.tags.withModels.map(tag => {
console.log('mapping over tag models')
console.log(tag)
return tag
}

回应@markerikson评论:

case CREATE_TODO:
const tags = payload.tags.split(',')
const trimmed = tags.map(tag => tag.trim())
trimmed.forEach(tag => Tag.create(tag))
break

Tag 模型中的

处理 reducer 内的字符串。 TodoTag 的代码都是 here

最佳答案

正如我在评论中所建议的:您没有正确创建标签实例。看起来您将每个单独的标签字符串直接传递给 Tag.create(),因此它就像 Tag.create("testing")。相反,您需要传递一个对象,例如Tag.create({name : "testing"})

关于javascript - 在 Redux ORM QuerySet 上执行映射和过滤时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41514865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com