参考这个 SO问题,我有一个场景,我只需要匹配包含af的十六进制字符串.其他一切都不匹配.例:
checkForHexRegExp.test("112345679065574883030833"); // => false
checkForHexRegExp.test("FFFFFFFFFFFFFFFFFFFFFFFF"); // => false
checkForHexRegExp.test("45cbc4a0e4123f6920000002"); // => true
Run Code Online (Sandbox Code Playgroud)
我的用例是我正在使用一组十六进制字符串,并且只想验证那些是mongodb objectID的真实.
我有以下架构:
// ingredient
var ingredSchema = new Schema({
name: String,
cost: Number
});
// order
var orderSchema = new Schema({
cusName: String,
ingredients: [{type: Schema.Types.ObjectId, ref: 'Ingredient'}]
});
// create model
var Ingredient = mongoose.model('Ingredient', ingredSchema);
var Order = mongoose.model('Order', orderSchema);
Run Code Online (Sandbox Code Playgroud)
我已经在一个系列中保存了一堆成分,ingredients并且有一个UI,用户可以在其中为汉堡选择一组配料.然后我尝试orders在同一个数据库中的另一个集合中保存汉堡的订单,burgers如下所示:
// get order info from the form
var newOrder = new Order({ cusName: req.body.name,
ingredients: req.body.ingredients });
newOrder.save(function(err) {
if (err)
return console.log('Could not save your new order', err);
res.redirect('/order');
});
Run Code Online (Sandbox Code Playgroud)
保存订单的调用会生成以下错误: …
在从JS编辑器(Tern)中读取代码时,我遇到了for循环的各种用法,如下面的代码片段所示:
代码段1 @ lines 463-468:
for (;;) {
/* some code */
}
Run Code Online (Sandbox Code Playgroud)
代码片段2 @ 行97-100
for (var i = 0; ; ++i) {
/* some code */
}
Run Code Online (Sandbox Code Playgroud)
同样,我也遇到了一个带有空体的for循环,例如:
for (var p; p; p = someValue) /* empty body */ ;
Run Code Online (Sandbox Code Playgroud)
我试图了解代码执行流程中发生了什么.
我的看法是,对于代码片段1,for循环没有条件,所以它可能会无休止地继续下去?对于代码段2中的代码,i是否不断增加而没有限制?对于第三个,循环继续,直到p被赋予评估的东西false?
这些是我脑子里的想法,但我不确定.请协助.
从nodejs 源代码(LOC 179),我们有以下内容:
EventEmitter.prototype.once = function(type, listener) {
/** ... **/
function g() { /** ... **/ }
g.listener = listener; // => ???
this.on(type, g);
return this;
};
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的想法是这样的:
EventEmitter.once()设置一个事件type并listener在通过调用回调后立即将其删除g().但这条生产线究竟做了g.listener = listener;什么呢?
它是否在调用时添加了一个属性listener,该属性是构造函数创建的函数对象的函数g()?