我正在尝试构建一个既可以作为SPA又可以作为普通应用程序运行的应用程序,而无需尽可能重写任何代码.我的研究使人们相信使用node + backbone(在服务器和客户端上)都可以实现这一点.我找到了一些关于如何做到这一点的资源,但没有真正完整的.有没有人尝试过重新使用所有代码的完整解决方案?
我找到的资源:在服务器上重用骨干模型:http://blog.andyet.com/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/
在服务器上重用骨干视图和布局管理器:http: //vimeo.com/46033641
我还发现了一些实现这一目标的框架,例如(骨头,德比,流星),但我不觉得使用这样的框架是最好的解决方案,因为我仍然想要完全控制骨干和节点.
我对mongodb和node.js都相当新,但最近我得到了一切对我有用,直到我达到了我需要在我的网站上添加全文搜索的程度.根据我的研究,我发现Elasticsearch非常合适,但我无法弄清楚如何使用node.js和mongodb.我目前正在使用Heroku和MongoLab来托管我的应用程序.这是我的问题.
如何将所有mongo数据提供给elasticsearch?我是使用河流还是手动插入和删除所有数据?
我找到了这条河的东西,但我不太确定如何让它自动发生以及在哪里托管它.
如何从node.js查询Elasticsearch?是否有允许这个的包?
编辑:
问题2确实是我正在努力的方向.我还包括问题1和3,以帮助那些不熟悉该主题且来自谷歌的人.
如何检测youtube视频是否无法播放?
我知道有一种方法可以通过向youtube api调用请求,但是这需要花费太多时间来检查每个视频,因为视频是根据用户请求播放的.
有没有办法检查youtube播放器的状态,如果它没有播放,那么采取相应的行动?
我知道有一些状态,如准备好,停止,玩,qued.无法找到此特定事物的状态.
提前致谢
好的,我找到了解决方案.但它不会让我发布它因为我不像你们那样酷.这里是:
onYouTubePlayerReady = function() {
player.addEventListener("onError", "onPlayerError");
}
function onPlayerError(errorCode) {
playnext();
}
Run Code Online (Sandbox Code Playgroud)
如果要检查某个错误,则会在youtube网站上显示错误代码.不过这对我来说已经足够了.
在我的应用程序中,我只使用
app.use(express.json());
app.use(express.urlencoded());
Run Code Online (Sandbox Code Playgroud)
并不是
app.use(express.bodyParser());
Run Code Online (Sandbox Code Playgroud)
这样我就可以手动解析文件上传.看来这一行
app.use(passport.session());
Run Code Online (Sandbox Code Playgroud)
停止强制触发文件事件:
form.on('file', function(name, file) {
//never called
});
Run Code Online (Sandbox Code Playgroud)
如何使用护照会话而不与强大的文件事件发生冲突?
有许多关于文件上传的文章,教程和问题,但主要是针对初学者,没有一个完整地解释了如何保护文件上传以进行生产.我已经非常努力地找到关于如何做到这一点的完整答案,但它没有成功.
以下是我的发现的解释.
上传时限制文件大小:
app.use(express.limit('4mb'));
Run Code Online (Sandbox Code Playgroud)将文件上传限制为仅限某些路线:我无法将其实际工作,但这是我尝试过的:
更换:
app.use(express.bodyParser());
Run Code Online (Sandbox Code Playgroud)
同
app.use(express.json());
app.use(express.urlencoded());
Run Code Online (Sandbox Code Playgroud)
并将多部分中间件添加到每个上传路由:
app.post('/upload', express.multipart(), uploadController.uploadPhoto);
Run Code Online (Sandbox Code Playgroud)
这部分不起作用,但如果我离开,上传工作正常express.bodyParser().那么我做错了什么?
在保存上传到磁盘之前检查上载的文件类型:
我无法理解这一部分,但建议是编写一个自定义中间件,使用强大的内容来解析文件上传,并尝试在文件保存之前调整文件大小(假设它是图像),使用像图像魔术这样的库.建议这将使图像安全并确保它实际上是一个图像(因为如果它不是图像,该过程将失败).
这只适用于图像,因此它不是一个完整的解决方案.
我该如何实现呢?任何示例代码?
我上传的其他内容是否安全?
我正在使用环境对象将视图模型传递给视图。为了预览不同的状态,如何在将环境对象传递到预览之前更改环境对象中的某些属性?
我想做这样的事情,但这不起作用:
struct view_Previews: PreviewProvider {
@EnvironmentObject static var authenticationViewModel: AuthenticationViewModel {
get {
let v = authenticationViewModel
v.showResendCodeTimer = true
return v
}
}
static var previews: some View {
SomeView().environmentObject(authenticationViewModel)
}
}
Run Code Online (Sandbox Code Playgroud) node.js ×4
formidable ×2
backbone.js ×1
express ×1
file-upload ×1
javascript ×1
mongodb ×1
passport.js ×1
swiftui ×1
youtube ×1