Node.js sailsjs水线搜索分为两个表
sailsjs waterline将从一个表中搜索像“%sam%”这样的名称和从另一个表中搜索像“%nike%”这样的产品名称结合起来,并留下join以获取用户方面的数据。我知道在mongo没有左路球员,但如何做到这一点。我正在使用mongodbNode.js sailsjs水线搜索分为两个表,node.js,sails.js,waterline,sails-mongo,Node.js,Sails.js,Waterline,Sails Mongo,sailsjs waterline将从一个表中搜索像“%sam%”这样的名称和从另一个表中搜索像“%nike%”这样的产品名称结合起来,并留下join以获取用户方面的数据。我知道在mongo没有左路球员,但如何做到这一点。我正在使用mongodb waterline的.find()查询是异步的(事实上,所有nodeJS/sailsJS任务都是异步的),这意味着您不能保证User.find()在Product.find()之前返回 您需要使用(sails.js中的默认库)执行嵌套查询或使用承诺您
waterline的.find()查询是异步的(事实上,所有nodeJS/sailsJS任务都是异步的),这意味着您不能保证User.find()在Product.find()之前返回
您需要使用(sails.js中的默认库)执行嵌套查询或使用承诺您只需在sails中启用异步并使用它组合(连接)数据即可实现这一点 将在
/config/globals.js
中启用它:
async : true
使用该代码将是:
async.parallel({
user : function(callback){
//process user object here
User.find({ first_name: { 'like': reqData }}).exec(function user(err, user){
//add return to exit the function
if (err) return callback(err, null);
console.log(user);
return callback(null, user);
});
},
product : function(callback){
//process product object here
Product.find({ name: { 'like': reqData }}).exec(function user(err, product){
if (err) return callback(err, null);
console.log(product);
return callback(null, product);
});
}
},
function(err, results){
// the results array will equal { user : [..], product : [..] } even though
// the second function had a shorter timeout.
// you can access the user and product objects by results.user & results.product and do the combine process here
});
上述代码片段基于问题中给出的代码示例,该示例已被修改以适应异步并行方法。从用户u中选择u.name、u.age、p.name、p.brand左键在u.id=p.id上连接产品p,其中u.name类似于“%xyz%”,p.name类似于“%xyz%”;我想在waterline中进行此类查询,但由于mongo限制,我无法获得准确的结果\
async.parallel({
user : function(callback){
//process user object here
User.find({ first_name: { 'like': reqData }}).exec(function user(err, user){
//add return to exit the function
if (err) return callback(err, null);
console.log(user);
return callback(null, user);
});
},
product : function(callback){
//process product object here
Product.find({ name: { 'like': reqData }}).exec(function user(err, product){
if (err) return callback(err, null);
console.log(product);
return callback(null, product);
});
}
},
function(err, results){
// the results array will equal { user : [..], product : [..] } even though
// the second function had a shorter timeout.
// you can access the user and product objects by results.user & results.product and do the combine process here
});