什么是使用sequelize在sql中使用双冒号?

时间:2016-01-12 10:05:13

标签: node.js sequelize.js

我在node.js项目中看到过这个。

sequelize.query(" select * from user user.age = :: age", {替换:{年龄:20}});

为什么他使用双结肠而不是单结肠?

2 个答案:

答案 0 :(得分:0)

docs,你似乎需要一个冒号。可以使用冒号或匿名使用问号命名替换。 e.g。

sequelize.query("select * from user where user.age=:age", {replacements:{age:20}});

sequelize.query("select * from user where user.age=?", {replacements:[20]});

答案 1 :(得分:0)

哦,我想我明白了。 @chriskelly你是对的。还有一个冒号也会与RegEx匹配,另外两个冒号也会起作用。即::::年龄也被接受。

SqlString.formatNamedParameters = function(sql, values, timeZone, dialect) {
return sql.replace(/\:+(?!\d)(\w+)/g, function(value, key) {
if ('postgres' === dialect && '::' === value.slice(0, 2)) {
  return value;
}

if (values.hasOwnProperty(key)) {
  return SqlString.escape(values[key], false, timeZone, dialect);
} else {
  throw new Error('Named parameter "' + value + '" has no value in the given object.');
}
});
};