节点>表达>玉 - 形成模板化的子对象

时间:2011-11-30 23:32:30

标签: json node.js express pug

我的问题是子对象。 让我们举个例子:

tweets = [{id:1, title:"my tweet", author:{id:"sample", name:"Sample Guy"}}] ;

...等 现在,如果我想使用express和jade保存,我会创建一个表单并设置类似于此的输入:

input#title(type="text", name="tweet[title]", value="new tweet")

没有问题,但我如何设置作者的ID /名称?我的猜测没有用..

input#author(type="text", name="tweet[author[id]]", value="sample")

在我提交put之后尝试console.log('author '+tweet.author.id) ;时,只返回undefined。

提前感谢您的任何帮助,

2 个答案:

答案 0 :(得分:3)

引用对象的对象将是

tweet[author][id]

答案 1 :(得分:0)

每对括号都是深度水平。除了命名键,您还可以使用数字或空括号,这对无限字段很有用。

以下布局

input(type="hidden", name="some_field", value="some value")
input(type="hidden", name="tweet[id]", value="tweet id")
input(type="text", name="tweet[author][id]", value="author id")
input(type="text", name="tweet[author][name]", value="author name")


input(type="text", name="numbers[2]", value="2 value")
input(type="text", name="numbers[1]", value="1 value")
input(type="text", name="numbers[0]", value="0 value")

input(type="text", name="more_numbers[]", value="first")
input(type="text", name="more_numbers[]", value="second")
input(type="text", name="more_numbers[]", value="third")

将在提交后生成

{
    some_field: "some value",
    tweet: {
        id: "tweet id",
        author: {
            id: "author id",
            name: "author name"
        }
    },
    numbers: ["0 value", "1 value", "2 value"],
    more_numbers: ["first", "second", "third"]
}

正如@Pastor Bones所说,你必须使用

tweet[author][id]