有没有办法在node-mongodb-native驱动程序中使用动态密钥?我的意思是让变量保持键而不是直接使用键.
正如通常会这样做的时候:
db.createCollection('col', function(err, col){
col.insert({'_id':'wak3ajakar00'});
}
Run Code Online (Sandbox Code Playgroud)
改为:
db.createCollection('col', function(err, col){
var ID = '_id';
col.insert({ID:'wak3ajakar00'});
}
Run Code Online (Sandbox Code Playgroud)
当我运行后面的代码时,我最终会在集合db.col中找到一个文档ID,除了标准创建之外还调用了一个键_id,而不是只有一个_id带有值的键wak3ajakar00.这让我相信实际上不可能直接这样做.
相反,我现在只是创建我想提前插入的文档,如下所示:
db.createCollection('col', function(err, col){
var ID = 'wak3ajakar00';
var key = '_id';
insertion = {}
insertion[key] = ID;
col.insert(insertion);
}
Run Code Online (Sandbox Code Playgroud)
这与我想要的完全一样,但我只是想知道是否有更好的方法来解决这个问题.JavaScript,NodeJS和MongoDB对我来说都是新手,所以我觉得我很容易丢失一些东西.如果没有,有没有更简洁的方法在JavaScript中编写上述代码?
最好的,谢谢,
萨米
我正在将redis集成到我的NodeJS服务器应用程序中,我正试图弄清楚是否使用hiredis命令安装node_redis.我认为如果它在某种程度上没有用处,那么安装它的选项将无法使用.同时,node_redis(https://github.com/mranney/node_redis)的github页面清楚地表明升级到较新版本的nodeJS会导致添加hiredis选项出现问题.
有人可以列出添加hiredis vs不是的不成文的利弊吗?使用C库可以提高多少性能?
我有一个正在运行的 NodeJS 服务器。服务器将收到一些不需要响应的请求(只需在服务器中更新)。如果更新失败,客户无需担心。为了节省带宽,我不想响应上述请求。无法响应请求会以某种方式影响我的服务器的性能吗?
我有一个ul使用JavaScript动态生成的HTML .生成之后,我ul使用JQuery的$('#id').css('property',value)方法设置样式.这就是有问题的代码:
$('#actionSpace #datasetContent')
.css('-moz-column-count',this.content.length)
.css('-webkit-column-count',this.content.length)
.css('column-count',this.content.length)
.css('width',this.content.length*150 + 'px');
Run Code Online (Sandbox Code Playgroud)
基本上,我设置了3个不同的column-count属性 - 一次用于常规css,一次用于-moz域中的css,一次用于-webkit域中的css,然后我还设置了width属性.
这段代码在Firefox中运行得很好 - ul具有datasetContent更新ID 的元素的css 就好了.
但是,当我在webkit(Safari或Chrome)中运行它时,这将停止工作.奇怪的是,width属性(我在上面那条长行的css中设置的最后一件事)设置正确,但其他属性都没有设置.如果我在Chrome的检查器中手动更改它们,则网站更新就可以了.但是,当然,我不能合理地期望我的网站用户在我的页面上手动修补CSS以使其看起来很好:)
有没有人知道可能导致这个问题的原因是什么?
更新我尝试切换ul到a div,这根本没有任何区别.问题特别是JQuery CSS和列计数属性.也许这是直接提交给JQuery的人们的东西?我将等待,看看这里是否有任何回复,如果没有,我会在那里找到合适的通道.
我正在编写自己的cookie作为我使用NodeJS制作的网络服务器的一部分(即不使用任何软件包).我已经能够做到这一点,使用类似的东西:
response.writeHead(200, {
'Set-Cookie':'sesh=wakadoo'
});
Run Code Online (Sandbox Code Playgroud)
但是,我想让我的饼干比现在更持久(也就是说完全没有).我尝试过这样的事情:
var curdate = new Date();
response.writeHead(200, {
'Set-Cookie':'sesh=wakadoo; expires='+curdate.toUTCString()
});
Run Code Online (Sandbox Code Playgroud)
但唉,这似乎不起作用.chrome只是忽略了我设置的过期,而firefox从不加载页面.我目前的目标是简单地给我的cookie一个可以由浏览器解释的过期日期...有人知道怎么做吗?
最好,
萨米
我正在尝试将参数传递给Backbone.js视图,但我无法做到这一点.
我有一个Backbone视图如下:
var DataTypesView = Backbone.View.extend({
events:{
'click .datatype': 'add'
},
initialize: function(){
console.log(this.magic);
this.render();
},
render: function(){
console.log('printing template');
console.log(this.templateString);
etc.
}});
Run Code Online (Sandbox Code Playgroud)
后来,我把这个视图装箱如下:
dataTypesView = new DataTypesView({magic:true,el:$('#dataViewSpace'),templateString:'#template'});
Run Code Online (Sandbox Code Playgroud)
它不起作用.我不明白的是为什么的el作品就好了(我可以用用jQuery访问this.$el.),但this.magic和this.templateString都是不确定的...
有没有办法可以按照我上面尝试的方式将参数传递给视图?
在相关的说明 - 有什么方法可以传递渲染功能?我最初尝试传递一个渲染函数(并从骨干视图类中删除),但是当它不起作用时我尝试传递简单的数据类型而不是...我假设无论需要做什么来传递一个我的第一个问题的参数将用于传递函数.
我的文档结构与以下内容大致相似:
{
"_id": "theIdOfThisObject",
"subdoc": {
"array": [
[
{
"parameters": {},
"winner": null,
"participants": [
"Person1",
"Person2"
]
},
{
"parameters": {},
"winner": null,
"participants": [
"Person3",
"Person4"
]
}
],
[]
]
},
}
Run Code Online (Sandbox Code Playgroud)
我完全试图替换嵌套数组中的一个子文档.我不需要搜索它 - 我知道确切的位置.
例如,我试图用第一个子文档替换
"parameters": {"frog":20},
"winner": "Person1",
"participants": [
"Person1",
"Person2"
]
Run Code Online (Sandbox Code Playgroud)
我们会说它被保存为一个叫做的对象newObject.
我希望以下代码可以工作(并且Model是一个真正的Mongoose模型):
Model.findByIdAndUpdate('theIdOfThisObject',{$set: {'subdoc.array.0.0':newObject}}, function(err,doc){
console.log('doc is returned, but nothing is updated')
});
Run Code Online (Sandbox Code Playgroud)
我不知道发生了什么,为什么这不起作用.有人有什么建议吗?我一直在使用MongoDB的本机节点驱动程序很长一段时间(3年),但是Mongoose对我来说还是比较新的.
编辑 - 根据评论请求添加模式
架构非常简单.看起来如下:
var Schema = new mongoose.Schema({
subdoc: {
array: [{}] …Run Code Online (Sandbox Code Playgroud) 我仔细阅读了redux-actions教程,并对他们使用(我相信的)解构感到困惑.下面是一个示例(increment&decrement是函数返回的createAction函数).
const { createAction, handleActions } = window.ReduxActions;
const reducer = handleActions(
{
[increment]: state => ({ ...state, counter: state.counter + 1 }),
[decrement]: state => ({ ...state, counter: state.counter - 1 })
},
defaultState
);
Run Code Online (Sandbox Code Playgroud)
这是另一个使用的例子:
const { createActions, handleActions, combineActions } = window.ReduxActions;
?
const reducer = handleActions(
{
[combineActions(increment, decrement)]: (
state,
{ payload: { amount } }
) => {
return { ...state, counter: state.counter + amount …Run Code Online (Sandbox Code Playgroud) 如果我在收到请求时调用response.end()而不提供任何数据,调用response.write()或调用response.writeHead(),NodeJS会发生什么?我从两个角度对答案感到好奇:
1)服务器角度 - 这实际上是从nodeJS中的后端堆栈或堆中取出一些东西来释放一些资源吗?还是会发生完全不同的事情?
2)客户端视角 - 如果这是来自ajax请求,不希望收到任何数据作为响应,是否会出现任何问题?
node.js ×6
javascript ×3
mongodb ×2
backbone.js ×1
connect ×1
cookies ×1
css ×1
css3 ×1
ecmascript-6 ×1
html ×1
jquery ×1
mongoose ×1
node-redis ×1
redis ×1
setcookie ×1