【问题标题】:Schema object in JavascriptJavascript 中的模式对象
【发布时间】:2013-06-16 18:05:55
【问题描述】:

我是一名学习编码员,试图从问答应用程序中理解一些示例代码

在服务器端代码中,Question 对象有一个名为 answers 的属性:

var Question = new Schema({
    title: {type:String, required: true, trim:true},
    answers: [Answer],
    });

这是answers 唯一定义的地方,但它在下面的for 循环中也以某种方式与var question 一起使用:

var question;
var answerController = Alloy.createController('answer');

exports.setQuestion = function(c, q){
      question = c.get('questions')[q];

for(var i = 0; i < question['answers'].length; i++){
        var answer = question['answers'][i],

answers 是通过Question 对象定义的,它是如何在question 中使用的?

【问题讨论】:

  • 有人知道这里发生了什么吗?

标签: javascript for-loop properties export schema


【解决方案1】:
  • c.get('questions') 返回一个由 Schema 对象组成的数组。
  • question = c.get('questions')[q];question 设置为该数组的元素之一,因此它包含一个 Schema 对象。
  • 每个Schema 对象都有两个属性:title(其中包含一个对象)和answers,其中包含Answers 的数组。
  • 因此,question 现在指的是Schema 对象,您可以使用question.answersquestion['answers'] 来访问其Answer 数组。

您没有向我们展示的是调用exports.setQuestion() 的代码。该代码必须传递一个具有get() 方法的对象,该方法返回一个Schemas 数组。我不知道它们是从哪里弄来的。这都是系统的一部分,可能会跟踪已构建的整个问题列表。没有所有上下文,很难解释其中的一点点。

您提出的问题表明对变量、对象和属性之间的差异存在根本性的误解。我认为你需要回到书本上,更新你的知识。

【讨论】:

  • 谢谢,我们说话的时候我正在看书
  • 嗨,Barmar,我看书了,我还有最后一个问题。服务器上有许多 Schema 对象,其中一个名为 Chat,它具有以下属性:comments: [Comment]。这是否意味着如果我创建了一个名为chat 并名为chat = c.get('comments')[ch] 的新对象,它会将chat 设置为Chat[Comment] 数组的元素之一?换句话说,Chat 对象是否会成为任何调用属于Chat 的属性的对象的模板?
  • 我不熟悉您使用的框架,所以我无法真正回答。您所有的问题似乎都非常依赖于这个框架,但您从未识别过它(可能有一个标签)。 Schema 不是标准的 Javascript 功能,它是您正在使用的额外功能。
  • 我明白了,那你怎么知道c.get('questions')返回的是一个Schema对象数组?
  • 不,因为我不知道c 是什么,而且我不熟悉这个库。如果你告诉我们你使用的是什么库,我可以看看它是如何工作的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 2018-10-26
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多