Javascript Node.JS Mongoose:.find()未定义
我正在努力…这个函数在昨晚之前工作得很好…我没有对底层代码做任何更改,它似乎只是随机停止工作。代码如下:Javascript Node.JS Mongoose:.find()未定义,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在努力…这个函数在昨晚之前工作得很好…我没有对底层代码做任何更改,它似乎只是随机停止工作。代码如下: var KeyWord = require('./word'); console.log(KeyWord); // returns {} KeyWord.find().select('_id').exec(function(err, result) { if (err) { console.log("err
var KeyWord = require('./word');
console.log(KeyWord); // returns {}
KeyWord.find().select('_id').exec(function(err, result) {
if (err) {
console.log("error getting word");
} else {
console.log("Found");
}
});
下面是关键字对象
var mongoose = require('mongoose');
var Account = require('./account');
var ObjectId = mongoose.Schema.Types.ObjectId;
var KeyWordSchema = new mongoose.Schema({
chinese: String,
english: [String],
pinyin: [String],
tone: Number,
count: Number
});
var KeyWord = mongoose.model('KeyWord', KeyWordSchema);
module.exports = KeyWord;
我得到的错误是:
KeyWord.find().select('_id').exec(function(err, result) {
^
TypeError: undefined is not a function
我在index.js中运行了顶层代码,它运行正常。word.js文件和我在其中运行函数的文件位于同一文件夹中 我怀疑这是一个循环引用。您的模型导入的文件是否与您尝试导入的文件相同 检查试图运行的文件中的关键字时。查找。。关键字是否返回空对象{} 如果我是对的,当你这样做:
var KeyWord = require('/path/to/model/file')
console.log(KeyWord)
输出应该显示{},而不是类似于[object object]这是因为关键字未定义。首先,您必须在调用关键字之前创建关键字变量。查找。选择“U id”
如下更改代码:
var KeyWord = require('./models/KeyWord');//Your path to KeyWord schema file here
KeyWord.find().select('_id').exec(function(err, result) {
if (err) {
console.log("error getting word");
} else {
console.log("Found");
}
});
所有这些代码都在同一个.js文件中?如果不是,您如何将关键字添加到第一个代码段?不,它不是同一个文件。我正在导入关键字,很抱歉忘了包含它-导入工作正常。我已经打印了猫鼬和关键字,它们都没有被列为未定义。我还尝试了其他模型函数,如save和findOne,它们都被列为未定义。对我来说,在您的第一个代码片段中,KeyWord似乎不是mongoose模型,这表明它被不正确地导入或导出。看起来你正确地导出了它,这留下了你没有包含的导入步骤。删除了我的无关评论@ChrisWood这听起来像是一个循环参考问题。您的模型是否需要与您尝试将模型导入到的文件相同的文件或某种奇怪的三角恋文件?只需在调试器下运行它,查看关键字实际是什么,因为它似乎不是Mongoose模型。如果关键字未定义,则错误消息将非常不同。ReferenceError:关键字不是definedIt,它给了我一个{}!我在这两个文件中都导入了相同的文件,并且该文件需要上面列出的两个文件…可能就是这样。谢谢