我有Array
var fieldsToFetch = ['name', 'class', 'rollNumber'];
我正在将这个数组用于NODE-ORM2查询,简单来说,我正在向ORM说这是我想要获取的字段。
Person.find({ surname: "Doe" }).limit(3).offset(2).only("name", "class", "rollNumber").run(function (err, people) {
// returning only 'name', 'rollNumber' and 'class' properties
//this is working fine
});
在此代码中,您可以看到带有字段名称的.only()
函数。如果我通过逗号分隔在这里传递名称,那么它工作正常,但如果我喜欢这个
Person.find({ surname: "Doe" }).limit(3).offset(2).only(fieldsToFetch).run(function (err, people) {
// returning only 'name', 'class' and 'rollNumber' properties
// not working
});
我也试过
String(fieldsToFetch );
和fieldsToFetch .toString();
但它将整个数组转换为单个字符串。那么我怎么能在这里使用这个数组作为参数呢?
三江源。
修改
传递2或3个参数不是一个挑战,主要目标是将所有数组元素作为单个元素。
答案 0 :(得分:1)
因为您传递了一个数组,但它需要单独的字符串,所以如果您使用ES6
,则可以像.only(...fieldsToFetch)
一样传递。
这称为spread operator。它获取数组,将其拆分为项目并将它们作为单独的参数传递。
实施例
function f(a,b,c){
console.log(a);
console.log(b);
console.log(c);
}
var args = [1,2,3];
f(...args);

我使用spread operator
传递数组,并将数组拆分为单独的项目,并从左到右分配方向参数。
答案 1 :(得分:0)
尝试这样..使用array.splice()
从数组中删除最后一个元素。然后使用... spread operator
:
var fieldsToFetch = ['name', 'class', 'rollNumber'];
fieldsToFetch.splice(2,1);//now array having two elements ['name', 'class']
然后
.only(...fieldsToFetch)