2017-01-16 230 views
0

我有这个问题,我累了我解决不了这个问题Cast to string failed for value \"{}\" at path \"post\强制转换为string失败值

{ 
    "confirmation": "fail", 
    "message": { 
    "message": "Cast to string failed for value \"{}\" at path \"post\"", 
    "name": "CastError", 
    "stringValue": "\"{}\"", 
    "kind": "string", 
    "value": { 

    }, 
    "path": "post" 
    } 
} 

希望你能帮助我

的index.html

<h1>CreateComment</h1> 
    <form action="/api/comment" method="post"> 
     <input type="text" name="post" placeholder="Post" /><br /> 
     <input type="text" name="text" placeholder="Text"><br /> 
     <input type="submit" value"Create" /> 
    </form> 

Comment.js

var mongoose = require('mongoose') 

var CommentSchema = new mongoose.Schema({ 
    profile: {type: mongoose.Schema.Types.Mixed, default: {}}, 
    post: {type: String, default:{}}, 
    text: {type: String, default: ''}, 
    timestamp: {type:Date, default:Date.now} 
}) 

module.exports = mongoose.model('CommentSchema', CommentSchema); 

controllers.js

var Comment = require('../models/Comment') 
var promise = require('bluebird') 

module.exports = { 

    post: function(params, isRaw) { 
    return new Promise(function(resolve, reject) { 
     Comment.create(params, function(err, comment) { 
     if (err) { 
      reject(err) 
      return 
     } 
     console.log(comment) 
     resolve(comment) 
     }) 
    }) 
    } 

} 

api.js

var express = require('express'); 
var router = express.Router(); 
var controllers = require('../controllers'); 


router.post('/:resource', function(req, res, next) { 
    var resource = req.params.resource; 
    var controller = controllers[resource]; 

    if (controller == null) { 
    res.json({ 
     confirmation: 'fail', 
     message: 'Invalid Resource' 
    }) 

    return 
    } 

    controller.post(req.body, false) 
    .then(function(result) { 
     res.json({ 
     confirmation: 'success', 
     result: result 
     }) 
    }) 
    .catch(function(err) { 
     res.json({ 
     confirmation: 'fail', 
     message: err 
     }) 
    }) 
}) 

module.exports = router; 

这一切的我的代码

+0

你能先做一些调试,然后给我们一个真正的问题吗?也许显示你已经尝试过? – evolutionxbox

+0

期待的类型是'string',你得到的响应是'object'。 –

回答

1

我认为{}不是为一个有效的默认'post'成员。

post: {type: String, default:{}}, 

无论是“后”默认值应该是一个字符串,你需要提供一个或一个空的对象,然后类型不应该是“字符串”。

+0

谢谢兄弟你是真的 – MEAbid

相关问题