我有一个应用程序需要按特定顺序加载数据:根URL,然后是模式,然后最终使用各种数据对象的模式和URL初始化应用程序.当用户导航应用程序时,将加载数据对象,根据模式进行验证并显示.当用户CRUD数据时,模式提供首次通过验证.
我在初始化时遇到问题.我使用Ajax调用来获取根对象$ .when(),然后创建一个promises数组,每个模式对象一个.这样可行.我在控制台中看到了fetch.
然后我看到所有模式的获取,因此每个$ .ajax()调用都有效.fetchschemas()确实返回了一个promises数组.
但是,最终when()子句永远不会触发,并且"DONE"字样永远不会出现在控制台上.jquery-1.5的源代码似乎暗示"null"可以作为传递给$ .when.apply()的对象,因为when()将构建一个内部Deferred()对象来管理列表,如果没有对象是传入
这使用Futures.js.如果不是这样的话,应如何管理jQuery Deferreds数组呢?
var fetch_schemas, fetch_root;
fetch_schemas = function(schema_urls) {
var fetch_one = function(url) {
return $.ajax({
url: url,
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json"
});
};
return $.map(schema_urls, fetch_one);
};
fetch_root = function() {
return $.ajax({
url: BASE_URL,
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json"
});
};
$.when(fetch_root()).then(function(data) {
var promises = fetch_schemas(data.schema_urls);
$.when.apply(null, promises).then(function(schemas) {
console.log("DONE", this, schemas);
});
});
Run Code Online (Sandbox Code Playgroud) 我有一个简单的工具来构建文档集合,然后自动格式化为EPUB或LaTeX渲染,写在ExpressJS之上.我正在使用Coffeescript,如果这很重要(我对此表示怀疑).
使用Mongoose,我有以下内容:
DocumentSchema = new Schema
title: String
Offrefs = new Schema
ref: { type: ObjectId }
isa: String
BinderSchema = new Schema
title: String
contains: [Offrefs]
Run Code Online (Sandbox Code Playgroud)
Offrefs没有指定它所引用的内容,因为我希望能够在其他绑定器中包含一些绑定器,以创建逻辑集合:"这些是用于打印机","这些是用于epub","这些只是web, "等等(我把所有杂项都删掉了.)
不幸的是,我遇到了查询,对于检索到的对象
(story._id == offref.ref) -> True
Run Code Online (Sandbox Code Playgroud)
这两个确实看起来一样.但:
(binder._id == offref.ref) -> False
(String(binder._id) == String(offref.ref)) -> True
Run Code Online (Sandbox Code Playgroud)
并且最后两个中两个引用的视觉比较,它们是相同的ID号,但是ObjectId对象没有正确比较.
我不想不断地进行字符串转换,这在我将这些复杂对象转换为数据树时非常有可能.树关系是任何数据库中的熊; 他们在MongoDB中应该不难.
你如何在MongoDB中进行ObjectId比较?
我已成为jQuery新的和令人惊讶的Deferred模块的熟练用户,并且由于我正在使用更多的Node.js,我发现自己想要在我的Node.js编程中完全喜欢它的东西:回调阻塞直到随着任务的复杂性增加,可以自由地随意添加到数组中 - 例如当处理数据树时,其大小在开始时是未知的任务.
但是node-fibers需要一个全新的可执行文件,Q()界面只是node-step让人困惑,而且似乎只能处理单任务同步.
有人刚刚将jQuery的Deferreds移植到节点就绪形式吗?它似乎不太可能,Deferreds似乎也不依赖于DOM可用的功能,但我没有找到服务器端的等价物.
我对Backbone感到头痛.我有一组指定的记录,其中有子记录,例如:外科医生有预定程序,程序有设备,有些设备有消耗品需求(气体,液体等).如果我有一个Backbone收集外科医生,那么每个外科医生都有一个模型 - 但他的程序,设备和消耗品在从JSON解压缩后都将是简单的'Javascript数组和对象.
我想我可以在SurgeonsCollection中使用parse()来创建新的ProcedureCollections,然后创建新的EquipmentCollections,但过了一段时间,这就变成了毛球.为了使服务器端合理,有一个单一的联系点,需要一名外科医生和他的东西作为POST--所以在ConsumableModel上自动传播'set'以触发层次结构中的'save'也会使整个分层方法模糊.
还有其他人遇到过像这样的问题吗?你是怎么解决的?
今天的Rust之谜来自The Rust Programming Language,第一版的第4.9节.引用和借用的示例有这个例子:
fn main() {
fn sum_vec(v: &Vec<i32>) -> i32 {
return v.iter().fold(0, |a, &b| a + b);
}
fn foo(v1: &Vec<i32>) -> i32 {
sum_vec(v1);
}
let v1 = vec![1, 2, 3];
let answer = foo(&v1);
println!("{}", answer);
}
Run Code Online (Sandbox Code Playgroud)
这看似合理.它打印出"6",这是你所期望如果
v的sum_vec是一个C++参考; 它只是一个内存位置的名称,v1我们定义的向量main().
然后我sum_vec用这个替换了身体:
fn sum_vec(v: &Vec<i32>) -> i32 {
return (*v).iter().fold(0, |a, &b| a + b);
}
Run Code Online (Sandbox Code Playgroud)
它按预期编译和工作.好吧,那不是......完全疯了.编译器试图让我的生活更轻松,我明白了.令人困惑的是,我必须记住这个语言的特定时态,但并不完全是疯狂的.然后我尝试了:
fn sum_vec(v: &Vec<i32>) -> i32 {
return (**v).iter().fold(0, |a, &b| …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 SQLX 来开发 Rust 应用程序服务器作为后端存储。它适用于具有一些特殊默认行为的原始 CMS,即:如果找不到页面,则自动生成带有一些空白内容的页面。我希望能够重用调用 SQL 的函数,因此我希望它们采用实现该sqlx::Executor特征的类型,包括&mut sqlx::Connection、&mut sqlx::pool::PoolConnection和&mut sqlx::Transaction。
每个只需调用数据库一次的函数就可以很好地工作!
但是,我似乎无法重复使用执行器。在我确定页面不存在后调用此函数;我创建一个事务并使用 an&mut Transaction作为e参数调用它:
async fn create_page_for_title(e: impl Executor<'_, Database = Sqlite>, title: &str) -> SqlResult<RawPage> {
let newcontent_id = insert_new_root_content(e).await?;
let newpage = insert_new_page(e, title, newcontent_id).await?;
Ok(newpage)
}
Run Code Online (Sandbox Code Playgroud)
Rust (1.46) 是这样说的:
Error[E0382]: use of moved value: `e`
--> src/store.rs:239:30
|
230 | async fn create_page_for_title(e: impl Executor<'_, Database = Sqlite>, title: &str) -> …Run Code Online (Sandbox Code Playgroud) 我有一个有效的coffeescript/backbone成语,如下所示:
SidebarWidgets = ((() ->
SidebarWidgets = { }
class SidebarWidgetPrototype extends Backbone.View
initialize: (options) ->
@template = $(options.templateId).html()
render: () ->
$(@el).html(_.template(@template, @model.toJSON()))
@el
class SidebarWidgets.user extends SidebarWidgetPrototype
class SidebarWidgets.shoppingcart extends SidebarWidgetPrototype
class SidebarWidgets.messages extends SidebarWidgetPrototype
SidebarWidgets
)())
class Sidebar extends Backbone.View
views: ['user', 'shoppingcart', 'messages']
initialize: (options) ->
@subviews = { }
_.each(@views,(v) =>
subviews[v] = news SidebarWidgets[v](
model: cxDatasets[v]
id: 'sidebar-' + v
templateId: '#sidebar-' + v + 'template'
)
)
render: () ->
$(@el).html()
_.each(@views, (v) …Run Code Online (Sandbox Code Playgroud) 我正在尝试理解CouchDB和couchapp,并且正如我所经历的那样,我看到在任何给定的环境中都缺乏对"this"的使用.我理解show对象获取文档和请求,并允许对列表和视图进行操作.这些操作都是Javascript对象.但CouchApp似乎也存储了各种各样的东西:README文件,Mustache模板等等.它必须以某种方式访问它们.this操作员是否show以某种方式提供对设计文档的访问权限,通过除require语法之外的某些方式提供对对象的访问?
在Javascript中,this必须定义某种方式在每个上下文中,特别是"有一个这与每一个活动的执行上下文相关联的值,这个值取决于主叫方和被执行的代码的类型,并且当控制进入执行上下文被确定.与执行上下文关联的此值是不可变的"(ECMA-262 Spec,第3版,第10.1.7节).在执行CouchDB设计doc show函数的上下文中它意味着什么?一个view或list功能?
我在类中有以下代码.(这是coffeescript--它是一个couchdb实用程序! - 但这确实是一个node.js问题).我正在尝试使用Node 0.49做Node Node,这意味着使用异步调用来进行文件系统操作.起初,我把头发拉了出来,因为this.sentinel在加工过程中几次都没有了,所以我知道我在那里做错了.但后来我遇到了一个更奇怪的问题:在load_directory中,看到那些console.log()调用?当我运行它时,请注意何时发生.
check_sentinel: ->
@sentinel--
if @sentinel == 0
@emit('designDirLoaded', @object)
load_file: (rootdir, filename, object) ->
@sentinel++
fname = path.join(rootdir, filename)
@manifest.push(fname)
fs.readFile fname, (err, data) =>
object[filename] = data
@check_sentinel()
load_directory: (dirpath, object) ->
@sentinel++
fs.readdir dirpath, (err, files) =>
for fname in files
console.log("X1: ", fname)
fs.stat path.join(dirpath, fname), (err, stats) =>
console.log("X2: ", fname)
if stats.isFile()
@load_file(dirpath, fname, object)
if stats.isDirectory()
object[fname] = {}
@load_directory(path.join(dirpath, fname), object[fname])
@check_sentinel()
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
X1: …Run Code Online (Sandbox Code Playgroud) Python本身是如何测试的?不,"我如何在Python中编写单元测试?" 但是"CPython,Pypy等运行测试的合规套件在哪里断言它们是Python版本-XY符合?"
python网站提到了pythontest.net,但这似乎只是测试设施的目标,而不是合规套件本身的一部分或资源.
node.js ×3
backbone.js ×2
coffeescript ×2
javascript ×2
jquery ×2
rust ×2
.when ×1
asynchronous ×1
couchdb ×1
mongodb ×1
mongoose ×1
python ×1
rust-sqlx ×1
testing ×1