【问题标题】:Cast to string failed for value转换为字符串的值失败
【发布时间】:2017-01-16 22:57:11
【问题描述】:

我有这个问题我很累我解决不了这个问题Cast to string failed for value \"{}\" at path \"post\

{
  "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;

这是我所有的代码

【问题讨论】:

  • 你能先做一点调试,然后来找我们一个实际的问题吗?也许展示你尝试过的东西?
  • 预期类型为string,您收到的回复为object

标签: javascript node.js express mongoose bluebird


【解决方案1】:

我认为 {} 不是“post”成员的有效默认值。

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

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

【讨论】:

  • 谢谢你是真的
猜你喜欢
  • 2016-01-02
  • 2018-11-06
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
相关资源
最近更新 更多