Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么Falcor的setValue()不能在外部模型上工作?

为什么Falcor的setValue()不能在外部模型上工作?
EN

Stack Overflow用户
提问于 2015-08-25 12:33:31
回答 1查看 570关注 0票数 1

在本地setValue()模型上使用法尔科时,它可以正常工作,但是当模型移动到服务器时,就会发生'500 (内部服务器错误)‘。

下面的示例工作正常(脚本在浏览器中运行)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var $ref = falcor.Model.ref;
var model = new falcor.Model({
  cache: {
      productsById: {
           1: {
               name: "Product ABC",
               otherAdd: "something 1"
           },
           2: {
               name: "Product 123",
               otherAdd: "something 2"
           },

      },
      _view: [ $ref('productsById[1]') ],
      _cart: []
  }
});

model.
  getValue("_view[0].name").
  then(function(response1) { 
    console.log( response1 );
    model.
      setValue("_view[0].name", "Another book").
      subscribe(function(response2){
        console.log( response2 );
      });
  });

但是,当将此设置更改为远程Falcor模型时,它将失败。(脚本在浏览器中运行)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var $ref = falcor.Model.ref;
var model = new falcor.Model({source: new falcor.HttpDataSource('/model.json') });

model.
  getValue("_view[0].name"). // <-- works fine
  then(function(response1) { 
    console.log( response1 );
    model.
      setValue("_view[0].name", "Another book"). // <-- fails
      subscribe(function(response2){ // <-- fails on both subscribe() and then()
        console.log( response2 );
      });
  });

使用以下节点脚本(脚本运行在服务器上):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var express = require('express');
var app = express();
var falcor = require('falcor');
var falcorExpress = require('falcor-express');
var $ref = falcor.Model.ref;

function example(){
    return {
        cache: {
            productsById: {
                 1: {
                     name: "Product ABC",
                     otherAdd: "something 1"
                 },
                 2: {
                     name: "Product 123",
                     otherAdd: "something 2"
                 },

            },
            _view: [ $ref('productsById[1]') ],
            _cart: []
        }
    }
}

app.use('/model.json', falcorExpress.dataSourceRoute(function (req, res) {
    return new falcor.
                    Model( example() ).
                    asDataSource();
}));

app.use(express.static(__dirname + '/'));
var server = app.listen(8080);

控制台中的错误消息(调用setValue()时):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
POST http://localhost:8080/model.json 500 (Internal Server Error)
requestObserver @ falcor.browser.js:9294145.Observable.create.o.subscribe @ falcor.browser.js:9186_subscribe @ falcor.browser.js:2830182.Rx.Observable.observableProto.subscribe.observableProto.forEach @ falcor.browser.js:14256182.TapObservable.subscribeCore @ falcor.browser.js:16424tryCatcher @ falcor.browser.js:12847setDisposable @ falcor.browser.js:14304subscribe @ falcor.browser.js:14318182.Rx.Observable.observableProto.subscribe.observableProto.forEach @ falcor.browser.js:14256182.observableProto.materialize @ falcor.browser.js:16605tryCatcher @ falcor.browser.js:12847setDisposable @ falcor.browser.js:17513s @ falcor.browser.js:17530182.Rx.Observable.observableProto.subscribe.observableProto.forEach @ falcor.browser.js:14256182.MapObservable.subscribeCore @ falcor.browser.js:17073tryCatcher @ falcor.browser.js:12847setDisposable @ falcor.browser.js:14304subscribe @ falcor.browser.js:14318182.Rx.Observable.observableProto.subscribe.observableProto.forEach @ falcor.browser.js:14256182.MergeAllObservable.subscribeCore @ falcor.browser.js:15858tryCatcher @ falcor.browser.js:12847setDisposable @ falcor.browser.js:14304subscribe @ falcor.browser.js:14318182.Rx.Observable.observableProto.subscribe.observableProto.forEach @ falcor.browser.js:14256(anonymous function) @ falcor.browser.js:15419182.Rx.AnonymousObserver.AnonymousObserver.error @ falcor.browser.js:14066182.Rx.internals.AbstractObserver.AbstractObserver.onError @ falcor.browser.js:14000subscribeToSetResponse @ falcor.browser.js:4133182.Rx.Observable.observableProto.subscribe.observableProto.forEach @ falcor.browser.js:14256(anonymous function) @ falcor.browser.js:15409tryCatcher @ falcor.browser.js:12847setDisposable @ falcor.browser.js:17513s @ falcor.browser.js:17530182.Rx.Observable.observableProto.subscribe.observableProto.forEach @ falcor.browser.js:1425661.SetResponse.invokeSourceRequest @ falcor.browser.js:4031182.Rx.Observable.observableProto.subscribe.observableProto.forEach @ falcor.browser.js:14256182.observableProto.finally.observableProto.ensure @ falcor.browser.js:16522tryCatcher @ falcor.browser.js:12847setDisposable @ falcor.browser.js:17513182.ScheduledItem.invokeCore @ falcor.browser.js:13209182.ScheduledItem.invoke @ falcor.browser.js:13197runTrampoline @ falcor.browser.js:13517tryCatcher @ falcor.browser.js:12847scheduleNow @ falcor.browser.js:13528182.Rx.Scheduler.schedulerProto.scheduleWithState @ falcor.browser.js:13250s @ falcor.browser.js:17528182.Rx.Observable.observableProto.subscribe.observableProto.forEach @ falcor.browser.js:1425658.IdempotentResponse.ensureCollect @ falcor.browser.js:3696182.Rx.Observable.observableProto.subscribe.observableProto.forEach @ falcor.browser.js:14256subscribeToResponse @ falcor.browser.js:3956subscribe @ falcor.browser.js:3903(anonymous function) @ test.html:34
test.html:35 Error: Response code 500
    at _handleXhrError (http://netflix.github.io/falcor/build/falcor.browser.js:9316:19)
    at onXhrLoad (http://netflix.github.io/falcor/build/falcor.browser.js:9366:14)
    at XMLHttpRequest.onreadystatechange (http://netflix.github.io/falcor/build/falcor.browser.js:9280:13)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-27 00:47:33

这可能是明示的一个问题。在服务器端:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install --save body-parser

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: true}));
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32213532

复制
相关文章
Python+tkinter动态创建与销毁组件小案例
本文代码演示了如何在tkinter窗体上动态创建组件以及销毁组件的方法。 import tkinter import tkinter.messagebox import tkinter.simpledialog btnList = [] # 动态创建组件,并计算组件在窗体上的位置 def place(n): for i in range(n): exec('btn'+str(i)+'=tkinter.Button(root,text='+str(i)+')') eval('btn'+str(i)).p
Python小屋屋主
2018/04/16
5.2K0
Python+tkinter动态创建与销毁组件小案例
在 Vue 中,父组件中传递数据给子组件
在父组件中传递数据给子组件。在 Vue 中,可以通过 props 属性来实现父组件向子组件传递数据的功能。
王小婷
2023/09/11
3020
Vue 在父(子)组件引用其子(父)组件方法和属性
<button @click="callChildMethod()">父组件调用子组件方法</button>
授客
2020/06/23
1.9K0
subprocess:Python中创建子进程
subprocess库提供了一个API创建子进程并与之通信。这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准输入和输出通道来回传数据。
luckpunk
2023/09/29
5480
subprocess:Python中创建子进程
在 Vue 中,子组件如何向父组件传递数据?
在子组件中,使用 $emit 方法触发一个自定义事件,并传递要传递给父组件的数据作为参数。
王小婷
2023/09/03
6200
【tkinter系列 第一课 创建主窗口及Label部件 】
python中通常我们写程序,显示结果和操作都是在终端区,如果要想实现一个有显示界面的程序那该怎样实现呢?python中有好几个库都可以实现,这个系列我们一起来学习如何使用python自带的tkinter库来实现。
叶子陪你玩
2020/03/12
1.2K0
Python在tkinter界面中显示matplotlib动画
在tkinter应用程序界面中同时显示matplotlib绘制的动态折线图、动态散点图和动态柱状图。
Python小屋屋主
2020/02/23
5K0
vue中在父组件点击按钮触发子组件的事件
1、父组件的button元素绑定click事件,该事件指向notify方法 2、给子组件注册一个ref=“child” 3、父组件的notify的方法在处理时,使用了$refs.child把事件传递给子组件的parentMsg方法,同时携带着父组件中的参数msg 4、子组件接收到父组件的事件后,调用了parentMsg方法,把接收到的msg放到message数组中
江一铭
2022/06/16
6.3K0
python开发_tkinter_多级子菜单
==========================================================
Hongten
2018/09/13
1.9K0
python开发_tkinter_多级子菜单
Python中动态创建类实例
简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模块。如下: def createInstance(module_name, class_name, *args, **kwargs): module_meta = __import__(module_name, globals(), locals(), [class_name]) class_m
kongxx
2018/05/14
2.4K0
关于java子父类关系的小坑
      学过JavaSE的都知道java类在初始化的时候,如果存在直接父类,是先初始化父类,然后才初始化子类。       子类拥有父类所有的非私有化成员,非私有的成员不仅仅包括public修饰的成员,protected修饰的(protected修饰的可以访问其他包中子父类),不写访问修饰符是默认default修饰(只能访问同一个包中的类)。        由类的加载机制可以得知,类的加载包括 加载,验证,准备,解析,初始化这几个阶段。 其中:类静态变量初始化是在虚拟机的方法区中初始化的,类的实例变量会
神秘的寇先森
2018/05/30
1.4K4
vue子组件传值给父组件_子组件调用父组件中的方法
大家好,又见面了,我是你们的朋友全栈君。 参考视频 : https://www.bilibili.com/video/av32790541/?spm_id_from=trigger_reload 原
全栈程序员站长
2022/10/04
4.2K0
vue子组件传值给父组件_子组件调用父组件中的方法
小程序父组件向子组件传值
子组件:tabs1 父组件:demo04 先将子组件和父组件直接产生特定的联系,需要在demo04.json里面以键值对的方式添加。
全栈程序员站长
2022/08/30
5920
小程序父组件向子组件传值
js操作DOM在父元素中的结尾添加子节点注意
所以js是不能直接传入字符串的,但是jquery的append可以直接传入html字符串。
蓓蕾心晴
2018/10/25
9.9K0
js操作DOM在父元素中的结尾添加子节点注意
Excel小技巧41:在Word中创建对Excel表的动态链接
Office套件之间协作配合非常方便。例如,我们可以在Word中放置一个来自Excel的表,并且可以随着Excel中该表的数据变化而动态更新。这需要在Word中创建一个对Excel表的动态链接,允许Word文档自动获取Excel表的变化并更新数据。
fanjy
2020/07/02
4.1K0
Python+tkinter实现弹出模态子窗口
程序运行后显示主窗口,单击主窗口上的按钮之后弹出模态子窗口,主窗口不再响应鼠标和键盘操作,直到模态子窗口关闭之后主窗口再恢复对鼠标和键盘操作的响应。
Python小屋屋主
2022/06/05
4.3K0
Python+tkinter实现弹出模态子窗口
Vue 父组件向子组件传递动态参数,子组件如何实时更新[通俗易懂]
项目问题介绍:父组件中填入各种查询条件,点击查询按钮查出符合条件的数据。其中,数据列表是引入的子组件。第一次加载的时候,子组件数据正常显示,再次查询的时候子组件怎么实现实时更新呢?
全栈程序员站长
2022/07/29
6.6K0
Vue 父组件向子组件传递动态参数,子组件如何实时更新[通俗易懂]
【tkinter系列 第七课 Scale部件 】
python中通常我们写程序,显示结果和操作都是在终端区,如果要想实现一个有显示界面的程序那该怎样实现呢?python中有好几个库都可以实现,这个系列我们一起来学习如何使用python自带的tkinter库来实现。
叶子陪你玩
2020/03/12
2.3K0
Python中动态创建类的方法
在Python中,类也是作为一种对象存在的,因此可以在运行时动态创建类,这也是Python灵活性的一种体现。
drunkdream
2018/08/02
5.2K5
点击加载更多

相似问题

SQL server条件选择语句

61

SQL Server中条件的可选性

21

根据条件选择列SQL Server

12

SQL Server CTE选择多个条件

21

SQL Server:选择多个表/条件

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文