我有两个模型要参考。风格和品牌。
品牌填充了所需的对象,但样式始终为空。
我试过清除缓存/删除索引。有和没有include_in_parent并键入:’nested’。
我觉得这可能与指定的es_type等有关。不确定。
产品架构:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Style = require('./style');
var Brand = require('./brand');
var mongoosastic = require('mongoosastic');
var ProductSchema = new mongoose.Schema({
name: { type: String, lowercase: true , required: true},
brand: {type: mongoose.Schema.Types.ObjectId, ref: 'Brand',
es_type:'nested', es_include_in_parent:true},
style: {type: mongoose.Schema.Types.ObjectId, ref: 'Style',
es_schema: Style, es_type:'nested', es_include_in_parent: true},
year: { type: Number }
});
ProductSchema.plugin(mongoosastic, {
hosts: [
'localhost:9200'
],
populate: [
{path: 'style'},
{path: 'brand'}
]
});
Product = module.exports = mongoose.model('Product', ProductSchema);
Product.createMapping(function (err,mapping) {
if(err){
console.log('error creating mapping (you can safely ignore this)');
console.log(err);
}else{
console.log('product mapping created!');
console.log(mapping);
}
});
var stream = Product.synchronize();
var count = 0;
stream.on('data', function(){
count++
});
stream.on('close', function(){
console.log('indexed whisks ' + count + " documents");
});
stream.on('error', function(){
});
样式架构:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var mongoosastic = require('mongoosastic');
var StyleSchema = new mongoose.Schema({
name: { type: String, lowercase: true , required: true},
});
Style = module.exports = mongoose.model('Style', StyleSchema);
Style.createMapping(function(err, mapping){
if(err) console.log('error w/ mapping : ', err);
console.log('mapping created');
console.log(mapping);
})
var stream = Style.synchronize();
var count = 0;
stream.on('data', function(){
count++
});
stream.on('close', function(){
console.log('indexed styles ' + count + " documents");
});
stream.on('error', function(){
});
搜索查询:
exports.topSearch = function(req, res) {
console.log(req.body, "search product")
Product.search({query_string: {query: req.body.search}}, {from: req.body.fromNum,
size: req.body.size,
hydrate: req.body.hydrate
},
function(err, results) {
if (err) console.log('ERR', err);
if (results){
var data = results.hits.hits.map(function(hit) {
return hit
});
console.log('product data', data)
res.send(data);
}
else {
res.send({errmsg:'results not defined'})
}
});
};
当我查询时,得到以下结果:
_source:
{ name: 'Redemption White Rye Whiskey',
brand: [Object],
style: {},} },
关于评论请求:
产品已添加到数据库:
exports.create = function(req, res) {
Product.create(req.body, function(err, product) {
if (err) {
console.log('ERR', err)
};
res.send({
product: product
});
});
};
前/角:
$scope.add = function () {
var prodStyle = JSON.parse($scope.selectedStyle);
$scope.product = $scope.product._id;
$scope.product.style = prodStyle._id;
console.log($scope.product.style, 'prod style');
Product.create($scope.product).then(function (res) {
res.data.product.style = { name: prodStyle.name };
$scope.products.push(res.data.product);
$scope.product = {};
$scope.selectedStyle = {};
});
};
我已经工作了,但是它与npm / github上给出的示例有很大不同。
我必须删除es_schema:样式(就像我偶然为品牌所做的那样,这就是它起作用的原因)。我必须添加es_type:“ nested” /
es_include_in_parent,该文件是我从elasticsearch和mongoosastic文档中收集的。
我不确定这是故意的,但它似乎可以工作:
style: {type: mongoose.Schema.Types.ObjectId, ref: 'Style',
es_type:'nested', es_include_in_parent:true},
现在,当我console.log results.hits时,得到:style:[Object]根据需要。
以下是npm中给出的示例,它对我不起作用:
var Comment = new Schema({
title: String
, body: String
, author: String
});
var User = new Schema({
name: {type:String, es_indexed:true}
, email: String
, city: String
, comments: {type: Schema.Types.ObjectId, ref: 'Comment',
es_schema: Comment, es_indexed:true, es_select: 'title body'}
})
User.plugin(mongoosastic, {
populate: [
{path: 'comments', select: 'title body'}
]
})
主要内容:创建索引在本节中,我们将向Elasticsearch添加一些索引,映射和数据。此数据将用于本教程中解释的示例中。 创建索引 请求正文 它可以包含索引特定的设置,但是现在,它的默认设置为空。 响应 这意味着创建索引成功 创建映射和添加数据 Elasticsearch将根据请求体中提供的数据自动创建映射,我们将使用其批量功能在此索引中添加多个JSON对象。 请求体 响应结果 - 添加另一个索引 创建索引 请求
任何报告工具的主要目的是生成高质量的文档。 报告填写过程有助于报告工具通过操作数据集来实现此目的。 报告填写过程所需的主要投入是 - Report Template - 这是实际的JasperReport文件。 Report Parameters - 这些基本上是在报告填充时间传递给引擎的命名值。 我们将在报告参数章节中讨论它们。 Data Source - 我们可以从一系列Data Source
什么是OriginalChain?
@IsaAccisneros创建了新的SpinnerItem和MySpinnerAdapter类。我完全执行了他的新类。我的实现如下所示: 而他的长相是这样的: 那为什么我的行为怪异呢?我的代码的上下文是我的AddItemFragment在我的activity中的onCreateView。我说错了什么?谢谢! 编辑:已请求适配器类代码...
我正在尝试将CSV文件导入MySQL数据库,但没有成功。 我的数据库中有5列: ID, userID, moviID,速率,时间戳 在我的CSV文件中,只有4列由两个冒号“::”分隔。 这是示例数据: 1::1193::5::978300760 这是我的问题 $query=“将数据填充“$uploadfile”到表评级\以“::”结尾的表字段中,行以“\n”(userID、movieID、rate
当创建一个应用时,你将会想将多个控件放入一个窗口控件。我们的第一个 helloworld 范例仅仅使用了一个控件,因而我们可以只是简单地调用一个gtk_container_add()将控件填充到一个窗口控件。但是当你想要向窗口控件中放置超过一个控件时,控制每一个控件的位置和大小就变得很重要了。这就是接下来要讲的填充。 GTK+自带了大量各种布局的容器,这些容器的目的是控制被添加到他们的子控件的布局