Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t规范化查询:IndexNotFound:text索引是$text query';所需的;,代码:17287_Javascript_Mongodb_Mean - Fatal编程技术网

Javascript Can';t规范化查询:IndexNotFound:text索引是$text query';所需的;,代码:17287

Javascript Can';t规范化查询:IndexNotFound:text索引是$text query';所需的;,代码:17287,javascript,mongodb,mean,Javascript,Mongodb,Mean,该错误在下面的Product.find语句中触发: var bodyparser = require('body-parser'); var express = require('express'); var status = require('http-status'); var _ = require('underscore'); var mongoose = require('mongoose'); var productSchema = require('./product'); va

该错误在下面的Product.find语句中触发:

var bodyparser = require('body-parser');
var express = require('express');
var status = require('http-status');
var _ = require('underscore');
var mongoose = require('mongoose');
var productSchema = require('./product');

var schema = new mongoose.Schema(productSchema);

schema.index({ name: 'text' });

module.exports = function(wagner) {
var api = express.Router();

 api.use(bodyparser.json());

 api.get('/product/text/:query', wagner.invoke(function(Product) {
 return function(req, res) {
  console.log("we are  in the get " + req.params.query);
  Product.
    find(
      { $text : { $search : req.params.query } },
      { score : { $meta: 'textScore' } }).
    sort({ score: { $meta : 'textScore' } }).
    limit(10).
    exec(handleMany.bind(null, 'products', res));
  };
}));

return api;
};
function handleMany(property, res, error, result) {
 console.log("We are handling the many");
 if (error) {
  console.log(error);
  return res.
  status(status.INTERNAL_SERVER_ERROR).
  json({ error: error.toString() });
 }

 var json = {};
 json[property] = result;
 res.json(json);
}
我正在windows 10上运行MongoDB 3.4.2。我显式地运行语句db.products.ensureIndex({name:“text”})在MongoDB shell中,我第一次没有得到错误。但是,当查询耗时超过2000毫秒时,它仍然会间歇性地出现超时错误。我认为我不必在MongoDB shell中显式添加索引,因为我在上面的代码中添加了架构索引,但我不确定

谢谢


William

我进入MongoDB外壳,将索引放在产品集合上,如下所示:

db.products.createIndex({name:“text”})


这就是我的解决方案,它确实奏效了,但我不知道是否有什么地方出现了小故障,使得这个解决方案成为必要。

我也遇到了同样的问题,尽管过去有过索引。可能是因为我升级了节点?这太有用了,谢谢,我已经挠头好几天了,但在mongoosem,当我们的应用程序开始运行时,该怎么办呢?