尝试使用Mongoose将一些对象发送到数据库。 即,我得到搜索查询并将其保存到数据库,并保持记录唯一记录的数量。
这是我的模式:
const entrySchema = mongoose.Schema({
searchWord: { type: String, required: true, unique: true},
numEntries:{type:Number,default:0},
});
const entry = module.exports = mongoose.model('entry', entrySchema);
这是我使用的方法:
searchRouter.post('/search', (req, res) => {
let entry = new SearchEntry();
SearchEntry.findOneAndUpdate({ searchWord: req.body.searchWord },
{ $inc: { numEntries: 1 } },
{ new: true }, (err, response) => {
if (err) {
console.log(err);
}
if (!response.length) {
entry.searchWord = req.body.searchWord;
SearchEntry.save((err) => {
if (err) {
console.log(err);
}
})
}
})
});
现在在控制台中,当我尝试用邮递员进行测试时会吐出一个错误:
TypeError:无法读取null的属性“ length”
关于我该怎么做的任何想法?
P.S。 REST客户端响应“无法访问所请求的URL”, 但是我们点击了所需的路线,便开始发布post方法。
答案 0 :(得分:0)
Response可以为null而不是空字符串,对象或对象数组,并且您不能获得null长度,因为null不是字符串或对象数组,因此您必须检查响应是否为!= null ,然后测试长度。
答案 1 :(得分:0)
在您的帮助下,终于找到了解决方法:
searchRouter.post('/ search',(req,res)=> {
let entry = new SearchEntry();
SearchEntry.findOneAndUpdate({ searchWord: req.body.searchWord },
{ $inc: { numEntries: 1 } },
{ new: true }, (err, response) => {
if (err) {
console.log('find error ', err);
}
if (response === null) {
console.log('here');
entry.searchWord = req.body.searchWord;
console.log(entry);
entry.save((err) => {
if (err) {
console.log('save error', err);
}
})
}
})
res.send('done');
});