我正在尝试使用knex执行一个简单的计数(因为它似乎还没有被书架支持).以下代码正在运行:
bookshelf.knex('hosts').count('id').then(function(total) {
res.send({
meta: {
total: total[0]['count(`id`)']
}
});
});
Run Code Online (Sandbox Code Playgroud)
对我而言,我必须要做的total[0]['count('id')']才能获得实际结果.我在这里做事吗?
谢谢!
我正在尝试从2个类别(新闻和事件)获得两个2个博客帖子列表,然后在我的主页的2个不同列中显示它们.我需要执行2个单独的Ajax调用来获取这些博客帖子.我不使用ember-data进行此操作,因为我没有看到在这种情况下使用它的优势(但我可能错了).
export default Ember.Route.extend({
setupController(controller, model) {
var wpUrl = 'http://public-api.wordpress.com/rest/v1/sites/company.wordpress.com/posts/?number=2&category=';
Ember.$.ajax({ url: wpUrl + 'news', dataType: "jsonp", type: 'GET' }).then(function (data) {
controller.set('news', data.posts);
});
Ember.$.ajax({ url: wpUrl + 'events', dataType: "jsonp", type: 'GET' }).then(function (data) {
controller.set('events', data.posts);
});
}
});
Run Code Online (Sandbox Code Playgroud)
上面的代码有效.但是从我在Ember纪录片中看到的内容来看,我应该将这些数据放在model钩子中(而不是setupController)以利用承诺.所以我尝试用这种方式重新编写代码:
export default Ember.Route.extend({
model() {
var wpUrl = 'http://public-api.wordpress.com/rest/v1/sites/company.wordpress.com/posts/?number=2&category=';
return {
news: function () {
return Ember.$.ajax({ url: wpUrl + 'news', dataType: "jsonp", type: 'GET' }).then(function (data) {
return data.posts;
})
}, …Run Code Online (Sandbox Code Playgroud) 我是承诺世界的新手,我不确定我是否完全理解在某些情况下如何使用它们.
Sequelize最近添加了支持承诺,这确实使我的代码更具可读性.典型的情况是避免在无限回调中多次处理错误.下面的代码总是返回,204而我希望它404无法找到照片时返回.
有没有办法告诉Sequelize在发送404后"停止"执行承诺链?请注意,它res.send是异步的,因此不会停止执行.
// Find the original photo
Photo.find(req.params.id).then(function (photo) {
if (photo) {
// Delete the photo in the db
return photo.destroy();
} else {
res.send(404);
// HOW TO STOP PROMISE CHAIN HERE?
}
}).then(function () {
res.send(204);
}).catch(function (error) {
res.send(500, error);
});
Run Code Online (Sandbox Code Playgroud)
当然这个例子很简单,很容易用回调写.但在大多数情况下,代码可能变得更长.
我正在将Ember.js应用程序及其Express REST API分成两个不同的项目.我认为事情会更加清洁.
在那之前,我的Express应用程序都提供REST端点和所有静态文件,如index.html和app.js.但现在,ember-cli负责提供静态文件,Express应用程序处理身份验证+ REST.
我遇到的最后一个问题是我现在有两个不同的端口:ember-cli使用http://localhost:4200和快速使用http://localhost:3333.当我在身份验证时从Express获取会话cookie时,由于相同的源策略,它永远不会在后续请求中发送(请参阅:如何使用jQuery在不同的端口上发送AJAX请求?).
现在,如果我理解正确,我有两个解决方案:
第一个解决方案不行,因为部署后两个应用程序将使用相同的域/端口.第二种解决方案可能会起作用,但要求开发人员安装本地Web服务器以简单地运行应用程序似乎有点荒谬.
我相信很多人以前都遇到过这个问题.你有什么建议让开发变得容易?
谢谢!
我花了几个小时试图找出一种将枚举掩码转换为枚举值数组的通用方法,相反,我将枚举值的数组转换为其枚举掩码.
写一个扩展方法这样做有点痛苦,所以我只是想分享我的解决方案,以防它可以帮助某人.我相信它可以改进,但是,它在这里!
ember.js ×2
express ×2
javascript ×2
bookshelf.js ×1
c# ×1
ember-cli ×1
ember-data ×1
enums ×1
ienumerable ×1
knex.js ×1
nginx ×1
node.js ×1
sequelize.js ×1