我正在使用restify编写后api,使用mongoose编写mongodb。
'use strict'
const Trending = require('../models/trending');
const trendingController = {
postTrending: (req, res, next)=>{
let data = req.body || {};
console.log(Trending);
let Trending = new Trending(data);
Trending.save(function(err) {
if (err) {
console.log(err)
return next(new errors.InternalError(err.message))
next()
}
res.send(201)
next()
})
}
}
这里的错误是没有定义趋势,我不知道为什么..其他类似的控制器工作正常。 趋势是猫鼬模型 型号代码
'use strict'
const mongoose = require('mongoose');
const timestamps = require('mongoose-timestamp');
const Schema = mongoose.Schema;
const TrendingSchema = new mongoose.Schema({
_id: Schema.Types.ObjectId,
headline: {
type: String,
required: true
},
description: String,
data: [
{
heading: String,
list: [String]
}
],
tags: [{ type: Schema.Types.ObjectId, ref: 'Tags' }]
});
TrendingSchema.plugin(timestamps);
const Trending = mongoose.model('Trending', TrendingSchema)
module.exports = Trending;
文件夹结构
controllers
--- trending.js
models
---trending.js
答案 0 :(得分:1)
由于这条线,你遇到了这个问题;
let Trending = new Trending(data);
您应避免对两个不同的事物使用相同的变量名来防止此类问题。特别是在这种情况下,如果您只对类使用它,则使用大写字母。
用;替换该行;
let trending = new Trending(data);
问题发生是因为let
(和const
)是块作用域的,因此将覆盖具有相同名称但来自外部作用域的变量。然后,您将对此变量进行未定义,因为您在声明它的同一行中引用它,因此它实际上仍未定义。